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-jdk
apt 包后,同样在 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