由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Unix版 - 怎么从script中把环境变量传回到当前shell中? (转载)
相关主题
which shell is best?shell script for "for" loop
[转载] About the history急:ld.so.1的问题
为什么time命令无法重定向?如何改变CLASSPATH?
可以看别人的环境变量?One shell question
Solaris下指定打印机的环境变量是什么?xterm Xt error: Can't open display::0
equivilent $REMOTEHOST in kshTCSH里怎么用setenv把一个带有空格的路径加给$PATH?
按你们的经验,这个错误是由什么引起的?login shell and normal shell?
help shell script (waiting on line)bash 彩色 shell prompt
相关话题的讨论汇总
话题: src话题: script话题: shell话题: newpath话题: 执行
进入Unix版参与讨论
1 (共1页)
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
1 (共1页)
进入Unix版参与讨论
相关主题
bash 彩色 shell promptSolaris下指定打印机的环境变量是什么?
how to grep with more than one patterns in tcsh?equivilent $REMOTEHOST in ksh
unix下编译fortran 的错误太多,看不到怎么办?按你们的经验,这个错误是由什么引起的?
用上箭头键找以前运行过的命令help shell script (waiting on line)
which shell is best?shell script for "for" loop
[转载] About the history急:ld.so.1的问题
为什么time命令无法重定向?如何改变CLASSPATH?
可以看别人的环境变量?One shell question
相关话题的讨论汇总
话题: src话题: script话题: shell话题: newpath话题: 执行