如何在 Mac OS X 上重置 $PATH 变量?

Nei*_*eil 23 unix path environment-variables macos

我弄乱了我的路径变量,现在我运行的一些应用程序引发了错误,说没有找到命令(错误 127),例如datesleep。当直接在 shell 中执行时,这些命令工作正常。

我猜这与格式错误的 $PATH 变量有关,并且需要知道如何重置它。我已经删除了文件~/.bashrc~/.bash_profile/etc/bash.bashrc~/.bashrc~/.profile

还有哪些文件可以保存我的$PATH?是否有一些更简单的方法来重置路径而不是挖掘可以保存我的路径的无数文件?

请注意,此路径问题仅与我的用户有关。我在我的系统上做了一个测试用户,路径很好,恢复正常。

更新:谢谢。我不知道我删除的哪个文件做了它,但事情又恢复了。你们做了“专家”做不到的事情。是的,克里斯,你是对的。我所做的 PATH 自定义在 bash_login 中。但不知何故,它在没有我删除这些自定义的情况下工作。我想可能是因为我使用了这个名为“RCEnvironment”的预制面板,并且我输入了一个带有引号和 :PATH 的路径。我不知道它是否需要引号,并且它不会替换 :$PATH,所以这可能是错误的根源。我忘了我什至有那个prefpane!

Chr*_*sen 23

如果您有 ~/.MacOSX/environment.plist 文件,请检查它是否提供了默认的 PATH 值。

如果是 XML 格式(plist 可以是多种格式),则可以使用任何文本编辑器进行编辑。plutil -lint ~/.MacOSX/environment.plist如果您手动编辑它,请检查它。

或者,您可以使用defaultsPlistBuddy等命令对 XML 或二进制格式的 plist 文件进行受控修改。


您始终可以在任何 shell 的初始化文件中设置您自己的 PATH。

把类似下面的shell的启动文件的您(.bashrc.bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"
Run Code Online (Sandbox Code Playgroud)

这将覆盖在 shell 启动时设置的任何默认 PATH (第一个PATH=不使用$PATH,因此它总是以您提供的任何内容开始)。

只有“登录”文件的人会被使用(即存在并且可读的第一个~/.bash_profile~/.bash_login~/.profile将被使用)。.profile是为了与其他 shell 向后兼容——如果你使用它,请确保它没有特定于bash的语法。如果您使用.bash_login.bash_profile(除了名称之外,它们在功能上是等效的),然后[[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]在顶部附近使用一行,以便登录外壳程序也将在您的.bashrc.

如果您希望bash 的所有实例都具有相同的 PATH,请使用.bashrc. 如果您经常发现自己从命令行以交互方式修改单个 shell 的 PATH 并希望在子 shell 中使用修改后的 PATH(这种情况可能不是很常见),那么您应该将这些语句放在“登录”文件之一中. 只选择一个登录文件并使用它。


小智 9

1.打开你的终端

2.你可以先检查你当前的$PATH,输入

回声 $PATH

到终端

3.如果$PATH那个终端返回的是你想要的路径,那么你很好;如果没有,请键入

导出路径=/usr/bin:/bin:/usr/sbin:/sbin

,然后键入

触摸 ~/.bash_profile

,然后键入

打开 ~/.bash_profile

,然后您会发现一个 EditText 打开,现在在该 EditText 中输入您想要的路径;例如,键入

PATH=/usr/bin:/bin:/usr/sbin:/sbin

(这是$PATHmac的默认设置,考虑到您要重置,$PATH所以您可能应该输入它),保存它,然后关闭 EditText,然后关闭终端。

4.现在您已经更改$PATH或重置为mac的默认值$PATH

  • 我觉得上面有很多没有效果。为什么你认为“触摸”是必需的?另外,当您无论如何都要关闭终端时,为什么要在命令行上运行 `export`,而不是只将它添加到 `~/.bash_profile`(也需要 `export`)并完成它?(或者,运行 `source ~/.bash_profile` 将更改应用到当前窗口。) (2认同)