如何从 Mac 上的 $PATH 中删除条目

Posted

技术标签:

【中文标题】如何从 Mac 上的 $PATH 中删除条目【英文标题】:How to remove entry from $PATH on mac 【发布时间】:2013-03-30 03:43:24 【问题描述】:

我尝试安装 Sencha Touch SDK 工具 2.0.0 但无法正常运行。它在 $PATH 变量中创建了一个条目。 后来我删除了 sencha sdk tools 文件夹,但没有意识到 path 变量还在。

当我做 echo $PATH 时,我得到了 -

/Applications/SenchaSDKTools-2.0.0-beta3:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

我搜索了如何从 $PATH 中删除变量并按照以下步骤操作:

    下达命令PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"echo $PATH 显示/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 下达命令export PATH 关闭终端并重新打开。发出命令echo $PATH。这次我得到了 /Applications/SenchaSDKTools-2.0.0-beta3:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

谁能告诉我我做错了什么?

【问题讨论】:

【参考方案1】:
    echo $PATH 并复制它的值 export PATH="" export PATH="/path/you/want/to/keep"

【讨论】:

另请注意,在运行export PATH="" 之后,您可能会看到以下错误: -bash: tail: No such file or directory -bash: sed: No such file or directory That is expected. 相当直接!!谢谢【参考方案2】:

检查以下文件:

/etc/bashrc
/etc/profile
~/.bashrc
~/.bash_profile
~/.profile
~/.MacOSX/environment.plist

其中一些文件可能不存在,但它们最有可能包含 $PATH 定义。

【讨论】:

~/.profile 返回“没有这样的文件”,所有其他人返回“权限被拒绝” 您需要超级用户权限才能编辑/etc 中的文件。不过,您至少应该能够读取所有文件(前提是它们确实存在)。文件的权限是什么? (ls -el filename) /etc目录下的bashrc和~/目录下的bashrc有什么区别? /etc 中的那个影响所有用户,你的主目录 (~) 上的那个只影响你自己的用户。 ~/.bashrc 中的设置优先于/etc/bashrc 中的设置。 对我来说,在~/.profile 中进行更改是有效的。我正在使用 MAC OS X El Capitan。我认为默认情况下,它来自~/.profile【参考方案3】:

在 MAC OS X Leopard 及更高版本上

cd /etc/paths.d

上述目录中可能有一个文本文件,其中包含您要删除的路径。

vim textfile //check and see what is in it when you are done looking type :q 
//:q just quits, no saves

如果您要删除它,请执行此操作

rm textfile //remove it, delete it

这里是a link 指向一个有更多信息的站点,即使它说明了“添加”路径。不过,您可能会有所了解。

【讨论】:

【参考方案4】:

您所做的对当前会话有效(仅限于您正在工作的终端)。您需要保留这些更改。考虑将上述步骤 1-3 中的命令添加到您的 $HOME/.bashrc

【讨论】:

对不起,我不太明白你在说什么。我应该在哪里添加 $HOME\.bashhrc 命令? 我知道命令对当前终端会话有效。这就是为什么我认为“出口”会起作用 将步骤 1 和 3 中的命令添加到文件 $HOME/.bashrc(在文件末尾)。打开一个新终端并执行echo $PATH 只是 export VARIABLE=VALUE 不会在所有会话中持续存在 VARIABLE。您需要在启动文件中说明这一点,例如$HOME/.bashrc/etc/profile(如果更改适用于系统上的所有用户)。 添加 bash_profile 帮助我将其从 PATH 变量中删除。我使用sudo nano ~/.bash_profile 打开它【参考方案5】:

如果您要专门删除 Python 3 的路径,我在 ~/.zprofile~/.zshrc. 中找到了它

【讨论】:

【参考方案6】:

$PATH 包含从实际文件中引用的数据。因此,您应该找到包含要删除的引用的文件,然后删除该引用。

这是一个可以逐步完成的好列表 [复制自 @Ansgar's 答案,并进行了少量更新]。

/etc/bashrc
/etc/profile
~/.bashrc
~/.bash_profile
~/.profile
~/.MacOSX/environment.plist
/etc/paths
/etc/paths.d/

请注意,/etc/paths.d/ 是一个目录,其中包含带有路径引用的文件。例如,在此目录中可能有一个名为 fancy-app 的文件,在此文件中您将看到如下条目:

/path/to/fancy-app

此路径将出现在您的$PATH 中,您可以删除文件中的条目以将其删除,或者如果该文件只有您要删除的一个引用,则可以删除该文件。

【讨论】:

这正是我找到罪魁祸首所需要的。 /etc/paths.d/ 有错误的条目。谢谢@BannerMan【参考方案7】:

在终端窗口中使用sudo pico /etc/paths 并将条目更改为您要删除的条目,然后打开一个新的终端会话。

【讨论】:

以后我建议您在回答之前阅读问题的正文。 还记得看里面/etc/paths.d/【参考方案8】:

当您登录或启动 bash shell 时,会根据 .bashrc 或 .bash_profile 加载/配置环境变量。无论您在做什么导出,它仅对当前会话有效。所以export PATH=/Applications/SenchaSDKTools-2.0.0-beta3:$PATH 每次打开外壳时都会执行此命令,您可以覆盖它,但同样仅适用于当前会话。编辑 .bashrc 文件以满足您的需要。如果它说权限被拒绝,也许该文件是写保护的,一个指向其他文件的链接(许多组织保留一个主 .bashrc 文件并为每个用户提供指向其主目录的链接,您可以复制文件而不是链接并开始向其中添加内容)

【讨论】:

【参考方案9】:

关闭终端(结束当前会话)。再次打开它。

【讨论】:

以上是关于如何从 Mac 上的 $PATH 中删除条目的主要内容,如果未能解决你的问题,请参考以下文章

删除导航服务上的转发条目?

如何从 plist 数组中读取一个条目

删除 Eclipse Juno 中的“快速访问”条目

Spring:如何从联结表中删除条目?

如何使用 Sharpcompress .net 从 ZIP 存档中删除单个条目

如何从与 Firebase 数据库同步的 ArrayList 中删除条目?