关于macos:如何在我的mac上正确设置我的git $ PATH(我做过,但需要了解它是如何工作的)?

How to properly setup my git $PATH on my mac (I did, but need to understand how it really works)?

我在Mac上安装了Git,但是Git——版本给了我旧的安装(我猜是Xcode安装)。所以我解决了这个问题:

  • 创建~/.bash_配置文件
  • 写:

    导出路径=/usr/local/bin:$path

  • 重新启动终端

不过,我认为我的配置中有一些东西可以更好地设置。

我当前的echo$path

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin

所以它是有效的,但它是相当混乱的,因为我有2个/usr/local/bin和an/usr/local/git/bin

另外,我不明白为什么现在它可以工作,因为/usr/local/bin只包含bbedit命令:

  • 巴布迪
  • BBEDIT
  • 贝布特

我不太清楚所有的路径配置文件以及它们的读取顺序。我只知道一些unix命令。~/中的当前文件是:

~/轮廓:

1
2
3
4
if [ -f ~/.bashrc ];
then
    source ~/.bashrc
fi

~/BASHC:

1
. ~/bin/dotfiles/bashrc

然后进来。~/bin/dotfiles/bashrc

1
2
3
. ~/bin/dotfiles/bash/env
. ~/bin/dotfiles/bash/config
. ~/bin/dotfiles/bash/aliases

在。~/bin/dotfiles/bash/env:

1
export PATH=/usr/local/bin:/opt/local/bin:/opt/local/sbin:$PATH

. ~/bin/dotfiles/bash/config为空

而且。~/bin/dotfiles/bash/aliases包含一些别名commad。

无论如何,它应该读~/bin/dotfiles/bash/env,但它不读,或者只在/etc/path之后读它。

~/。首先读取bash_配置文件。

我当前的/etc/路径内容:

1
2
3
4
5
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

有人能给我解释一下这些机械装置吗?:p还是我应该将此问题发布到某个UNIX组?


在*nix shell上键入任何命令时,shell将尝试使用$PATH解析该命令。假设你的路径是/usr/bin:/usr/local/bin,那么这会发生:

1
2
3
4
$ foo
- Does /usr/bin/foo exist? No.
- Does /usr/local/bin/foo exist? No.
- Does foo exist in the current working directory?

换言之,它依次查看每个$PATH元素,并试图找到您在其中要求的可执行文件。这就是典型的configuremakemake install过程从./configure开始的原因,以明确表示您希望在当前目录中运行configure可执行文件,而不是在系统范围内运行某些命令。

为了弄清楚到底选择哪个foo,运行:

1
$ which foo

通过提供任何命令的完整路径,可以显式运行该命令:

1
$ /usr/local/bin/foo  # overrides /usr/bin/foo, should it exist

初始化脚本中的export PATH=...:$PATH指令只是为路径预先准备了某些路径,允许您覆盖命令解析顺序的优先级。/usr/local/bin在那里两次并不理想,但也不是真正的问题。你应该注意不要让你的路径长得太长,因为这可能会导致对每个命令进行大量的查找,也可能会影响你的头部。


有关bash config文件加载顺序的全面演练,请参见此部分。