2

我正在阅读 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”......而且这本书没有提到它......

提前致谢:)

4

3 回答 3

3

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

您可以通过“采购”它来运行脚本而无需启动新进程:

. ./test.sh

但是,您应该删除exitthen,否则它将退出您当前的 shell。

于 2013-02-01T10:16:49.370 回答
2

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

. test.sh

test.sh 应该没有退出:

#! /bin/bash
read test
echo $test
于 2013-02-01T10:15:30.483 回答
1

进程位置

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

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

于 2013-02-01T10:17:36.357 回答