OS X-创建个人bin目录(〜/ bin)并运行脚本而不指定其完整路径


19

因此,我想做的是bin在主文件夹中创建一个个人目录。我创建了以下文件夹:

/Users/thi/bin

我将脚本放在此文件夹中,但是如果在终端中输入:

myScript

它没有运行。

有人告诉我我必须导出这个bin路径,它与有关echo $PATH,但是我不知道该怎么做。


Answers:


20

您需要在文件中添加以下内容~/.profile

export PATH=/Users/thi/bin:$PATH

然后 source ~/.profile

请注意,您可能需要创建此文件,因为它以开头,.因此在查找程序中可能看不到,无法通过文本编辑器之类的应用程序进行编辑。要列出所有文件(包括隐藏文件),请使用:

ls -la ~/

如果将export PATH = / Users / thi / bin:$ PATH添加到我的.bashrc文件中,它将起作用吗?这是正确的吗?
Thi G.

12
最好使用$HOME/bin而不是/Users/thi/bin。然后,您可以将设置复制到另一台用户名可能不同的计算机上。
2013年

如果我在终端中键入:PATH = $ HOME / bin:$ PATH,然后键入:export PATH。会成功吗?
Thi G.

1
如果这样做,它将立即更改设置,但不会在以后的启动中更改。要以一种在重启后仍然有效的方式更改路径,您需要在.profile文件中包括这些命令。
丹尼尔

1
太好了,谢谢大家的回答。我加export PATH=$HOME/bin:$PATH$HOME/.bash_profile
Thi G.

10

如果您使用bash,则将以下行添加到~/.bash_profile

PATH=~/bin:$PATH

PATH默认情况下被标记为导出,因此您无需使用export

如果同时~/.bash_profile~/.profile存在时,bash只读取~/.bash_profile,当它被作为交互登录shell。~/.profile也被其他可能不理解与bash相同的配置选项的shell使用。

终端和iTerm 2默认情况下会打开新的外壳程序作为登录外壳程序。当bash作为交互式登录shell调用时,它读取~/.bash_profile但不读取~/.bashrc。其他平台上的终端仿真器通常将新的外壳作为非登录外壳打开,因此bash读取~/.bashrc但不读取~/.bash_profile。OS X用户经常使用~/.bash_profile作为对应于个人配置文件~/.bashrc在其他平台上,但它也是常见的来源~/.bashrc~/.bash_profile或告诉终端或2的iTerm开辟新的炮弹非登录shell。

您也可以在/etc/paths或中更全局地更改路径/etc/launchd.conf,但是在许多情况下,该路径仍默认为/usr/bin:/bin:/usr/sbin:/sbin。而且我只需要真正更改shell和文本编辑器中的路径。


太好了,谢谢。我加export PATH=$HOME/bin:$PATH$HOME/.bash_profile
Thi G.

使用export或纯赋值~时,都不需要export,并且$HOME在变量赋值之前都将它们(在未加引号的情况下)都进行了扩展。
Lri

劳里·兰塔,你喜欢什么就个人而言,.bash_profile还是.profile?或者您.bashrc的主目录中有一个?
Thi G.

我曾经只使用.bash_profile,但是现在我使用.bashrc作为主要配置文件,而.bash_profile仅包含. ~/.bashrc。在emacs和tmux中,在shell模式下,新的shell作为非登录shell被打开。我不会将.profile用作我的主要配置文件,因为它也可以被ksh等其他shell读取。
Lri

3

通常,您会在$PATHlike 之后加上其他路径,PATH=$PATH:/$HOME/bin因为如果您不想取代另一个可能与,具有相同名称的可执行文件/bin,等等。


4
可能会很容易地争辩说,$HOME/bin正是由于这个原因,您才应该将其放在开头。但是关键是目录的顺序很$PATH重要,shell将选择第一个匹配的命令。感谢您指出了这一点。
nohillside
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.