我通过以下方式设置了一些环境变量:
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 运行我的命令。