将新目录添加到 PATH 与 PATH 中已有目录的符号链接

将新目录添加到 PATH 与 PATH 中已有目录的符号链接

在设置它以便我可以从 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 自动配置设施(即configureconfigure.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 安装都是这样做的(因此firefoxmozilla 将以 .... 结尾的 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

相关内容