小编Mia*_*ach的帖子

Unix shell 变量中“导出”的范围是什么?

我通过以下方式设置了一些环境变量:

MY_VAR='helloworld'
export MY_VAR
Run Code Online (Sandbox Code Playgroud)

然后我通过切换到另一个用户

su SOME_OTHER_USER
Run Code Online (Sandbox Code Playgroud)

我回应了 MY_VAR 变量..我看到了它的价值!

1)请您解释一下这个问题。据我了解,当我通过 export 命令导出变量时,它不是“全局”导出,它只是一个用户本地变量。为什么我看到了?

2)最初我有一个猜测:可能是,当我切换到另一个用户时,我启动了我的 bash 进程的一些子进程,这就是为什么我可以看到我的变量,因为导出的变量被传递给当前 shell 的任何子进程。但是命令ps ---pid <my bash's pid which I got with echo $$>在输出中只显示相同的 pid。所以看起来这意味着没有与我的 bash 进程相关的子进程,并且 su 没有启动任何进程。我对吗?(顺便说一句,我不会以这种方式看到一个“孩子”,即使我用 bash 命令启动另一个 bash,我也不知道为什么)

3) 最后,谁能看到我以这种方式导出的变量?鉴于我从我的操作系统 GUI 启动了一些其他进程 - 我即将看到它吗?看起来没有,因为如果我启动另一个终端,我在那里看不到它。那么我导出的变量的范围和生命周期是多少?

我使用 Debian Wheezy。我在 Root 用户下从 RootTerminal 运行我的命令。

linux unix bash shell environment-variables

6
推荐指数
1
解决办法
3585
查看次数

标签 统计

bash ×1

environment-variables ×1

linux ×1

shell ×1

unix ×1