如何在bash脚本中打印TCL环境变量
TCL脚本如何在bash脚本中打印TCL环境变量,bash,tcl,Bash,Tcl,TCL脚本 set ::env(foo) "bar" bash脚本 echo ${env(foo)} echo $foo 我可以在TCL脚本中打印环境变量,但由于某些原因,我无法在bash脚本中打印环境变量。我做错了什么?如果bash脚本包含类似的内容(我们称之为showenv) 你的tcl呢 #! /usr/bin/tclsh set ::env(foo) bar exec ./showenv >>& /dev/tty 然后,showenv将显
set ::env(foo) "bar"
bash脚本
echo ${env(foo)}
echo $foo
我可以在TCL脚本中打印环境变量,但由于某些原因,我无法在bash脚本中打印环境变量。我做错了什么?如果bash脚本包含类似的内容(我们称之为
showenv
)
你的tcl呢
#! /usr/bin/tclsh
set ::env(foo) bar
exec ./showenv >>& /dev/tty
然后,showenv
将显示
bar
也就是说,tcl脚本为其子进程设置环境。如果bash脚本包含类似的内容(我们称之为
showenv
)
你的tcl呢
#! /usr/bin/tclsh
set ::env(foo) bar
exec ./showenv >>& /dev/tty
然后,showenv
将显示
bar
也就是说,tcl脚本为它的子进程设置环境。这两个脚本之间的关系是什么?如果
foo
在shell的环境中,它只是echo“$foo”
。启动时,shell仅为环境中的每个名称定义一个常规shell变量,该名称构成一个有效的shell标识符,这是不可能发生的——子进程不允许更改其父进程的环境。这两个脚本之间的关系是什么?如果foo
在shell的环境中,它只是echo“$foo”
。启动时,shell仅为环境中的每个名称定义一个常规shell变量,该名称构成一个有效的shell标识符,这是不可能发生的——不允许子进程更改其父进程的环境。环境变量从一个子进程自动转到另一个父进程。相反,我们必须写一些东西(标准输出或文件),调用者将其解释为设置环境变量的指令。环境变量永远不会自动从子级转到父级。取而代之的是,我们必须写一些东西(标准输出或文件),调用方将其解释为设置环境变量的指令