请注意,我在网上看到了几种关于如何改变PATH
变量的解决方案,但这不是我要问的。
我想要做的不是对新PATH
变量进行硬编码,而是撤消安装对其所做的更改。
出现此问题是因为我反复尝试安装相同的软件,因此我的PATH
变量包含重复和冗余的目录。
我希望不要对新PATH
变量进行硬编码,因为我担心如果将来我想安装软件并让它自动附加到PATH
,那么硬编码PATH
会覆盖任何此类更改。
PATH
当我输入时,我的当前显示内容如下echo $PATH
:
/home/douglaswja/.rvm/gems/ruby-2.6.3/bin:/home/douglaswja/.rvm/gems/ruby-2.6.3@global/bin:/home/douglaswja/.rvm/rubies/ruby-2.6.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/douglaswja/.rvm/bin
(重复为ruby-2.6.3
, ruby-2.6.3@global
, ruby-2.6.3/bin
)
这就是我的PATH
样子~/etc/environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games".
答案1
变量PATH
可以在大量文件以及用户创建的自定义文件中设置。我将列出我能找到或想到的内容,并向您描述为什么使用特定文件。
要调查您的系统是否PATH
设置了位置,请检查这些位置。
/etc/bashrc
包含 bash shell 使用的系统默认值和别名。.bashrc
针对交互式非登录 shell 执行。
/home/user/.bashrc OR ~/.bashrc
.bashrc
是 Bash 每次以交互方式启动时运行的 shell 脚本。它会初始化一个交互式 shell 会话。您可以将任何可以在命令提示符下输入的命令放入该文件中。
~/.bash_login
shell 按照顺序查找~/.bash_profile
、~/.bash_login
和~/.profile
,然后从第一个存在且可读的命令中读取并执行命令。
/etc/profile
该/etc/profile
文件没有太大区别,但是它用于在用户 shell 上设置系统范围的环境变量。
~/.bash_profile
为登录 shell 执行。bash_profile
当您想要为系统的单个用户设置定制的 PATH 变量时适用。
/etc/environment
/etc/environment
是系统范围的配置文件,这意味着它可供所有用户使用。它归系统所有root
,因此您需要成为管理员用户才能sudo
修改它。
/etc/profile.d
您的Linux系统将执行此目录中所有以.sh结尾的脚本文件。
~/.zprofile
和
~/.zshrc OR ~/.zshenv
Zsh
是一个功能强大的 shell,既可以用作交互式 shell,也可以用作脚本语言解释器。虽然与 兼容Bourne shell
(默认情况下不兼容,只有在发出 emulate sh 时才兼容),但它具有改进的制表符补全和通配符等优势。
~/.kshrc OR ~/.kprofile
使用Korn shell
两个启动文件,.profile
和.kshrc
。.profile
由您的登录名读取一次 ,ksh
而.kshrc
每个新 都读取ksh
。
这些是我能找到的,检查一下它们以查看PATH
其中是否设置了变量,即你所拥有的变量。