关于shell变量和环境变量

时间:2013-02-01 10:08:29

标签: linux shell

我正在阅读Wrox,开始Linux编程。 但我对shell变量有疑问。

这是一个名为test.sh的shell脚本:

#! /bin/bash
read test
echo $test
exit 0

然后我chmod脚本:

$ chmod +x test.sh
$ ./test,sh

当我输入“ok”时,它会回显“ok”。

但是当我返回shell界面时,我输入了:

$ echo $test

它没有返回......

我不知道为什么$ test不像脚本那样返回“ok”... 这本书没有提到它......

提前致谢:)

3 个答案:

答案 0 :(得分:3)

变量仅存在于创建它们的过程中(如果导出它们,也存在于子进程中)。运行脚本会在脚本结束后创建一个新进程,其所有变量都将丢失。

您可以通过“获取”来运行脚本而无需启动新流程:

. ./test.sh

然后你应该移除exit,否则它会退出当前的shell。

答案 1 :(得分:2)

这是因为他们是不同的过程, “包含”其他脚本运行的来源

. test.sh

test.sh应该没有退出:

#! /bin/bash
read test
echo $test

答案 2 :(得分:1)

处理地点

  

环境变量的值是本地的,这意味着它们是   特定于它们设置的运行过程。这个   意味着,如果我们打开两个终端窗口(这意味着我们有两个   单独的bash进程运行),并更改环境的值   其中一个窗口中的变量,该变化将不会被看到   shell在另一个窗口或当前的任何其他程序   桌面。

为了您的理解:https://help.ubuntu.com/community/EnvironmentVariables

相关问题