如何从 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 中删除条目的主要内容,如果未能解决你的问题,请参考以下文章