在 /etc/environment 中创建路径时 ~/folder 和 /home/username/folder 之间的区别

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/environmentPATH="/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之间有什么区别?

为什么会变成这样?我是新手,我只是想了解更多。感谢您的回复。

gei*_*rha 5

在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