Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash脚本中打印TCL环境变量_Bash_Tcl - Fatal编程技术网

如何在bash脚本中打印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将显

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
将显示

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标识符,这是不可能发生的——不允许子进程更改其父进程的环境。环境变量从一个子进程自动转到另一个父进程。相反,我们必须写一些东西(标准输出或文件),调用者将其解释为设置环境变量的指令。环境变量永远不会自动从子级转到父级。取而代之的是,我们必须写一些东西(标准输出或文件),调用方将其解释为设置环境变量的指令