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。