为什么 $PATH 没有反映环境文件 Ubuntu 18.04 中的内容?

为什么 $PATH 没有反映环境文件 Ubuntu 18.04 中的内容?

echo $PATH提供:

/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin

/etc/environment国家

PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

我认为环境文件负责设置 PATH 环境。我的意思是该文件名为环境,其中唯一的命令是路径。我遗漏了什么?

这是 Ubuntu 18.04.1,当我尝试运行 时pcsxr,它告诉我/usr/games没有添加到环境变量中。从一个角度来看,这似乎是正确的,从另一个角度来看,这是错误的。桌面文件没有问题,它已经过验证。此外,所讨论的游戏已经过验证/usr/games

运行此命令:

$ grep --color -H 'PATH=' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
                    ~/.bash_aliases /etc/bash.bashrc /etc/profile \
                     /etc/profile.d/* /etc/environment 2> /dev/null

/home/neonred811/.profile:    PATH="$HOME/bin:$PATH"
/home/neonred811/.profile:    PATH="$HOME/.local/bin:$PATH"
/etc/environment:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

答案1

我在尝试设置JAVA_HOME环境变量时遇到了同样的问题(关联)安装default-jdkapt 包后,同样在 Ubuntu 18.04.1 上。

设置JAVA_HOME根本/etc/environment不起作用,即使该文件已/usr/lib/environment.d/按说明进行了符号链接这里

设置它~/.profile确实有效,但显然不是系统范围的,所以一些工具无法看到它,这很麻烦。

我最终使用/etc/profile.d/如下脚本进行了设置这里,最终成功了。

我不知道为什么/etc/environment不起作用。我在 Ubuntu 16.04 上成功使用了该方法,但在 18.04 上没有成功。我还按照/etc/中所述对所有内容进行了 grep这个相关问题并在这里提出建议,但无法弄清楚。

答案2

你可以使用 grep 来找出/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin设置的位置:

time sudo grep -rnw \
--exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e \
"/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin"

这将需要几分钟才能运行,所以可以泡杯咖啡或倒垃圾。但在 NVMe SSD 上,它将需要 45 秒并显示以下内容:

Binary file /home/rick/.mozilla/firefox/9fu0cuql.default/places.sqlite matches
Binary file /home/rick/.mozilla/firefox/9fu0cuql.default/places.sqlite-wal matches

real    0m46.343s
user    0m13.143s
sys     0m8.853s

在我的系统上,唯一像您这样的路径被覆盖的地方是 Firefox。

但是我的$PATH变量始终是正常的(对我来说):

$ echo $PATH
/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

相关内容