【问题标题】:How to remove entry from $PATH on mac如何从 Mac 上的 $PATH 中删除条目
【发布时间】: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 中删除变量并按照以下步骤操作:

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

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

【问题讨论】:

    标签: macos bash terminal .bash-profile path-variables


    【解决方案1】:
    1. echo $PATH 并复制它的值
    2. export PATH=""
    3. 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】:

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

          【讨论】:

            猜你喜欢
            • 2020-09-13
            • 1970-01-01
            • 2013-02-17
            • 1970-01-01
            • 2014-09-08
            • 2015-03-15
            • 2023-04-08
            • 1970-01-01
            • 2018-12-22
            相关资源
            最近更新 更多