r*****e 发帖数: 792 | 1 【 以下文字转载自 Linux 讨论区 】
发信人: realife (leda), 信区: Linux
标 题: 怎么从script中把环境变量传回到当前shell中?
发信站: BBS 未名空间站 (Sat Feb 14 17:20:19 2009)
试了bash和tcsh,都不能把script中设置的变量值传回执行script的
shell中。比如a.sh是:
#!/bin/sh
SRC=/newpath/
export SRC
然后,在shell中执行a.sh,
echo $SRC, 得到的并不是在script中设的值啊?
谢谢 |
c*****t 发帖数: 1879 | 2 你那个是 standard shell 里面的指令。
bash 是
export SRC=/newpath/
tcsh 是
setenv SRC /newpath/
【在 r*****e 的大作中提到】 : 【 以下文字转载自 Linux 讨论区 】 : 发信人: realife (leda), 信区: Linux : 标 题: 怎么从script中把环境变量传回到当前shell中? : 发信站: BBS 未名空间站 (Sat Feb 14 17:20:19 2009) : 试了bash和tcsh,都不能把script中设置的变量值传回执行script的 : shell中。比如a.sh是: : #!/bin/sh : SRC=/newpath/ : export SRC : 然后,在shell中执行a.sh,
|
r*****e 发帖数: 792 | 3 执行script前,SRC已经设为/oldpath/,在bash下的script里面,试了
export SRC=/newpath/, 但是script执行完后,echo $SRC 还是/oldpath/。
用tcsh,执行时source a.sh,就可以得到SRC=/newpath/.
曾经有人说bash下,执行script a.sh 要用. a.sh,
但是用了显示/bin/. permission denied.
【在 c*****t 的大作中提到】 : 你那个是 standard shell 里面的指令。 : bash 是 : export SRC=/newpath/ : tcsh 是 : setenv SRC /newpath/
|
c*****t 发帖数: 1879 | 4
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这个当然,child process 是不能 set parent process 的 environment.
都得用 source 。source 是这些 shell 的内部指令,不会执行新的 process
(单单执行一个 shell script 的话都是在 child process 里)。其目的就是
设置当前 shell 的 environmental variable,alias 等等。
我建议你找本 Unix nutshell 的书好好看看。你这样很浪费时间的。
【在 r*****e 的大作中提到】 : 执行script前,SRC已经设为/oldpath/,在bash下的script里面,试了 : export SRC=/newpath/, 但是script执行完后,echo $SRC 还是/oldpath/。 : 用tcsh,执行时source a.sh,就可以得到SRC=/newpath/. : 曾经有人说bash下,执行script a.sh 要用. a.sh, : 但是用了显示/bin/. permission denied.
|
r*****e 发帖数: 792 | 5 谢谢回答,从头看书的时间也不少吧。也不是看过全能记住,
还不是出了问题再想为什么吗?
anyway, 在bash下,执行 . a.sh也OK了。没有用source,
SRC的值更新了。
【在 c*****t 的大作中提到】 : : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : 这个当然,child process 是不能 set parent process 的 environment. : 都得用 source 。source 是这些 shell 的内部指令,不会执行新的 process : (单单执行一个 shell script 的话都是在 child process 里)。其目的就是 : 设置当前 shell 的 environmental variable,alias 等等。 : 我建议你找本 Unix nutshell 的书好好看看。你这样很浪费时间的。
|
c********0 发帖数: 262 | 6 => . a.sh
应该是 => . ./a.sh |