Macos 你把自己的脚本放在OSX的什么地方?

Macos 你把自己的脚本放在OSX的什么地方?,macos,bash,terminal,Macos,Bash,Terminal,当我为我的OSX编写bash脚本时,我想知道哪里是保存它们的好地方。是否有一个目录,我可以把他们都放在那里,他们将被自动拿起?或者我应该创建自己的目录,然后从.profile或其他什么引用此目录?通常/usr/local/bin,除非您不希望其他用户访问它们,在这种情况下$HOME/bin /usr/local/bin可能在默认路径中,但肯定需要将$HOME/bin添加到路径中。 将$HOME/bin添加到路径: PATH=${PATH}:$HOME/bin export PATH 在我看来

当我为我的OSX编写bash脚本时,我想知道哪里是保存它们的好地方。是否有一个目录,我可以把他们都放在那里,他们将被自动拿起?或者我应该创建自己的目录,然后从.profile或其他什么引用此目录?

通常
/usr/local/bin
,除非您不希望其他用户访问它们,在这种情况下
$HOME/bin

/usr/local/bin
可能在默认路径中,但肯定需要将
$HOME/bin
添加到路径中。
$HOME/bin
添加到路径:

PATH=${PATH}:$HOME/bin
export PATH

在我看来,你可以把你的脚本放在你想要的地方。除非您使用系统规范文件夹,否则这并不重要。我确实在/scr中保留了我的文件夹,并且只有root权限。这很方便,因为此文件夹中的所有脚本都需要root访问权限才能正确执行,我不希望最终用户窥视该文件夹

我的路径设置为:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
  • $HOME/bin
我将
/usr/local/bin
用于覆盖默认命令的命令。例如,我安装了Subversion 1.7.7,而OS X附带了1.6.18。
svn
的1.7.7版在
/usr/local/bin
中,而
svn
的默认1.6.18版在
/usr/bin
中。当我键入
svn
时,我得到的是我安装的版本,而不是OS X附带的版本。我用Java、Git、Python和其他一些二进制文件完成了这项工作,在这些二进制文件中,我需要一个与Mac上的版本不同的版本。其中大部分是符号链接。例如:

$ ls -l /usr/local/bin/ant
lrwxr-xr-x  1 root  wheel       16 Jun 12 11:01 ant -> /opt/ant/bin/ant
Ant 1.9.1安装在
/opt/Ant
中(实际上是
/opt/apache-Ant-1.9.1
,但它象征性地链接到
/opt/Ant
)。我将
/opt/ant/bin
下的所有内容链接到
/usr/local/bin
,因此它在我的路径中


我将
$HOME/bin
用于我的个人shell脚本和其他脚本。传统上,这是路径中的最后一个条目,因此不会意外重写内置命令。如果我做了一个名为
cp
的shell脚本命令,我就不会重写
/bin/cp
命令。

我对自己编写的可执行文件和脚本使用
~/bin
,对自己没有编写的可执行文件和脚本使用
/usr/local/bin

/usr/local/bin
被Homebrew、
pip
(以及
gem
npm
由Homebrew安装)用作
make install
的默认目标,并且被一些
.pkg
安装程序使用

我曾经有一个单独的目录,用于存放我自己没有编写的可执行文件和脚本,默认情况下这些文件和脚本不会放在
/usr/local/bin
中。但它包含的文件太少,所以我将其中的所有文件都移动到了
/usr/local/bin

我可以用
find/usr/local/bin在
/usr/local/bin中找到非自制的东西-lname'../Cell/*'

我自己编写的脚本不使用
/usr/local/bin
,因为
/usr/local/bin
已经包含了大约1000个其他文件,
~/bin
(或
bin
)通常更容易键入


我已将
setenv PATH~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/sbin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
添加到
/etc/launchd.conf
中。将
/usr/local/bin
放在其他目录之前存在潜在危险,例如,一些TextMate命令因此停止工作,但是,在系统安装版本之前安装较新版本的命令,并在任何地方使用相同的路径也很方便。

我将
$HOME/bin
放在路径的前面,以便覆盖系统选项(我将Perl和GCC的多个版本放在不同的目录中,并默认为最新版本,这些版本出现在$HOME/bin之后,这使我的路径变得复杂),但除此之外,我使用的系统与此类似。@JonathanLeffler您应该看看。它允许您轻松地在各种Perl版本之间切换。对于其他版本,我将二进制文件放入
/opt
,然后链接。例如,我有
/opt/apache-ant-1.9.1
/opt/apache-ant-1.8.1
/opt/apache/ant-1.7.1e> 我想使用的那个,我链接到
/opt/ant
。然后,我将
/opt/ant/bin
下的二进制文件链接到
/usr/local/bin
。要切换版本,我只需更改
/opt
@JonathanLeffler下的链接。出于安全原因,有一个传统是将
$HOME/bin
保存在路径的末尾。这是在在过去的几天里,每个人都在同一个Unix机器上。它可能不再适用了。我主要使用
$HOME/bin
来编写shell脚本和其他脚本。二进制文件安装在其他地方并链接到
/usr/local/bin
,出于安全原因,我把它放在路径的前面;如果我不能信任我的bin目录,我就会遇到一些问题使用系统目录无法修复。例如,我可以覆盖其他人放在
/usr/local/bin
中的垃圾^H^H^H^Hstuff。在以前的作业中,我不得不忽略
/usr/local/bin
(本质上不是在Mac上),因为它是由MIS“维护”的,NFS安装为只读,并且通常包含的内容已经过时(如“过时”)程序-可以说Perl 5.004吗?请注意,
$HOME
(或者就此而言,
~
)不能在
/etc/path
中工作。它需要在那里拼写出来-例如,
/Users/Rax
。我如何让Mac在/usr以外的文件夹中查找程序?我想保留所有包(如brew、swiftlint、gitconfig)按惯例folder@DanielSpringer:这就是/usr/local的作用。你可以把你的东西放在任何地方