如何让 shell 脚本可用于终端中的 运行 并可在 /bin 中搜索?

How to have shell script available to run in terminal and searchable in /bin?

我从 Jetbrains 下载了 CLion,它是一个带有 shell 脚本的 .tar.gz 运行。我决定将它放在我的 /opt 文件夹中,但现在我无法弄清楚如何从任何地方 运行 它, 在 /bin 中提供它(对于程序就像在 /bin 中搜索可执行文件的 dmenu)。

我尝试将脚本的路径(例如 /opt/clion/clion-2017.1.1/bin)添加到我的 .*rc 文件中的 $PATH,但这并没有使其在 /bin 中可搜索?我怎样才能对这样的东西进行单点维护?

如果您真的需要可执行文件出现在 /bin 中,您可以创建一个 link:

ln -s /opt/path/to/script.sh /bin

您需要添加目录而不是PATH 中的文件。所以它会是:

export PATH=$PATH:/opt/path/to/

然后您可以从任何地方 运行 script.sh 并执行它。

如果你想让它可搜索,那么你必须将它复制或link到某个搜索的目录中通过其他程序(如 dmenu)。但是 /bin 确实不是一个好的选择:最好是 /usr/local/bin.

可能可以配置其他程序 (dmenu) 使其在几个地方进行搜索,不仅是 /bin,也许 /usr/bin。

关于copying/moving/linking/symlinking,我会说hard-linking是最糟糕的选择,因为在那之后就更不清楚哪个文件是原始文件了。但有时也很好。如果您想将发行版的东西和您自己的东西分开,Symlinks 也不错。但是如果你使用 /usr/local/xxx,那是自动的 - /usr/local 下的任何东西都不会被发行版自动管理所触及。在那种情况下,甚至移动脚本也是一种选择。