r0x*_*nne 4 environment-variables
我的 ubuntu 上有一个位于~/project/
目录中的可执行脚本,我尝试将该路径添加到/etc/environment
. 所以,我编辑了这个路径PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/project/"
。然后,我注销并重新登录,打开终端su
并运行命令以在该文件夹上执行我的脚本,但结果是command not found
.
然后,我将路径更改/etc/environment
为 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/r0xx4nne/project/"
,瞧它的工作原理。现在我可以~/project/
在su
命令下运行其中的可执行脚本而不会失败。
我的问题是,在/etc/environment中创建路径时,~/project和/home/r0xx4nne/project之间有什么区别?
为什么会变成这样?我是新手,我只是想了解更多。感谢您的回复。
在shell中,在大多数情况下~/project/
被扩展为/home/yourusername/project
。这称为波浪号扩展。
如果你把
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/project/
Run Code Online (Sandbox Code Playgroud)
(注意,没有引号)在~/.profile
. 您的 PATH 将被正确设置,因为~/.profile
它在您登录时由 shell 解释。/etc/environment
(并且它是特定于用户的~/.pam_environment
)不是由 shell 解释的。它是由读pam_env模块登录过程,但它仅接受NAME=VALUE
对,并没有扩展(如$var
或~/
或$(command)
等)将在完成VALUE
。