如何优雅地撤消对 Ubuntu PATH 变量的更改?

如何优雅地撤消对 Ubuntu PATH 变量的更改?

请注意,我在网上看到了几种关于如何改变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其中是否设置了变量,即你所拥有的变量。

相关内容