我如何防止 $PATH 每次都重置?

我如何防止 $PATH 每次都重置?

我在设置 MacBook Pro 上的 PATH 时遇到了困难。

我关注了关联修改我的路径变量。

每次我启动一个新终端时,我都会得到一个指向的 PATH

/Applications/eclipse/apache-maven-3.0.5/bin

尽管.bash_profile如下

EXPORT PATH=/usr/bin:$PATH
export PATH=/usr/local/bin:$PATH
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

/etc/paths有以下内容

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/eclipse/apache-maven-3.0.5/bin

我确实尝试过看看这个关联也一样,但也没多大帮助

答案1

看起来你的shell是sh。OS X 的 /bin/sh 是 bash 的一个版本主要区别在于 POSIX 模式默认启用。它也不会读取登录 shell 的 ~/.bash_profile。来自man bash

如果使用名称 sh 调用 bash,它会尝试尽可能地模仿 sh 历史版本的启动行为,同时遵循 POSIX 标准。当作为交互式登录 shell 或使用 --login 选项的非交互式 shell 调用时,它首先尝试按顺序从 /etc/profile 和 ~/.profile 读取和执行命令。

因此,您可以使用 ~/.profile 而不是 ~/.bash_profile,但您可能只想将 shell 更改为普通 bash:

  • 如果设置为其他内容,请将“启动”>“打开的 Shell”设置为“默认登录 Shell”
  • chsh -s /bin/bash如果默认登录 shell 已更改,则运行

关于 David X 的回答中的评论线索的注释:

  • 将 /bin/bash 符号链接到 /bin/sh 不会有帮助。/bin/bash 和 /bin/sh 二进制文件几乎相同,但行为取决于调用 bash 的名称。
  • 终端和 iTerm 默认打开新 shell 作为登录 shell,例如 bash 读取 ~/.bash_profile 但不读取 ~/.bashrc。
  • OS X 上的 /etc/passwd 中不包含普通用户帐户。

答案2

我确信 PATH 需要在 .bashrc 而不是 .*profile 中设置。
尝试将其放入您的 .bash_profile 中(替换以下export PATH行):

if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

在你的 .bashrc 中:

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

答案3

那里只有一个条目.....第三个条目覆盖了所有内容......

export PATH=.:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH

相关内容