在设置它以便我可以从 bash 执行 Sublime Text 时,我发现了通过不同教程执行此操作的两种方法:
方法 1)创建一个/usr/local/bin/subl
到 Sublime 的 bin 目录的符号链接:
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl
这利用了/usr/local/bin
我的 PATH 变量中已有的内容。
...或者...
方法 2)更新 PATH 以包含 Sublime 的 bin 文件夹的路径:
export PATH="/Applications/Sublime Text.app/Contents/SharedSupport/bin/":$PATH
两种方法都有效,但我想知道一种方法是否比另一种更好,或者它们是否同样好?
我能看到的唯一优点是方法 1,如果在 PATH 目录中包含较少的目录是有益的(查找可执行文件的速度/性能?)。
答案1
如果你正在寻找方法直接从终端作为命令运行/执行程序/脚本,那么我认为放置脚本或链接/usr/local/bin
是不错的选择!
还有一个优点是它已经在路径中了。访问这相关帖子。
但是,如果程序目录提供多个可执行文件,那么我认为导出该目录的路径可能比单独创建多个符号链接有用/更好。
答案2
将符号链接添加到已有的目录PATH
通常是更好的选择。
如果您希望该软件在系统范围内(对其他用户)可见,请将符号链接添加到/usr/local/bin
.如果您希望该软件只有您自己可见,请添加一次$HOME/bin/
到您的PATH
目录(某些发行版正在将bash
shell 配置为自动添加该目录(如果存在))并从中添加符号链接。
您应该避免使用很长的目录PATH
(因此避免为每个新安装的应用程序在其中添加一个目录),这既是为了性能(但有些 shell 正在缓存PATH
查找,因此这可能并不那么重要),也是为了可维护性(您将拥有如果你PATH
包含几十个目录,那就一团糟);这也适用于LD_LIBRARY_PATH
(所以最好添加来自$HOME/lib/
...的符号链接)。
你也可能考虑使用GNU 存储这部分自动化了该过程(几年前我尝试使用它,但觉得它不值得负担)。
最后,许多从源代码编译的软件可以配置为安装在/usr/local/
其/usr/local/bin/
目录之外的其他位置。对于配置有的免费软件GNU 自动配置设施(即configure
从configure.ac
...生成脚本),您可能希望在构建时传递--prefix=$HOME/pub/ --exec-prefix=$HOME/bin/
和一些其他选项(例如,...)。--program-suffix=-mine
A第三种方法做的就是裹某些 shell 脚本中的可执行文件which export
-s 是一个增强型PATH
,例如使用export PATH=$PATH:/opt/something/bin
....(如果可执行文件分叉更多通过 执行的内部进程,则这是必要的execvp
);顺便说一句,大多数 Firefox 安装都是这样做的(因此firefox
或mozilla
将以 .... 结尾的 shell 脚本),或者在以-ing 完整路径exec mozilla.bin
结尾的脚本中。exec
所以你可以简单地添加一个小shell脚本$HOME/bin/sublimetext
(假设$HOME/bin/
是已经在你的PATH
) 包含
#!/bin/sh
# file $HOME/bin/sublimetext
# if needed add export PATH=$PATH:/Applications/Sublime\ Text.app/Contents/SharedSupport/bin
exec /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl "$@"
$HOME/bin/subl
如果您愿意,您甚至可以命名该脚本;不要忘记使您的脚本可执行chmod u+rx $HOME/bin/subl