如何使用符号链接将 bash 脚本添加到 PATH 变量?

如何使用符号链接将 bash 脚本添加到 PATH 变量?

我运行一个名为 PocketMine 的游戏服务器。所以基本上我的主目录中有一个文件夹,其中有一个用于运行服务器的 bash 脚本:~/PocketMine/start.sh

每次我想运行服务器时,我要么cd进入文件夹,./start.sh要么PocketMine/./start.sh

我想知道如何添加一个调用的符号链接pocketmine/usr/local/sbin这里有很多带有符号链接的程序),它将运行start.sh并使用其目录的内容。

/usr/local/sbin/pocketmine=~/PocketMine/./start.sh

你可以说我很懒,但我厌倦了 cd 进入文件夹并运行脚本,而不是只输入一个命令。

答案1

您实际上不需要任何符号链接,只需编辑~/.bashrc并添加以下语句:

PATH=$PATH:$HOME/PocketMine

这可以避免不必要的混乱(如符号链接)污染您的文件系统。如果您是 csh/tcsh 用户而不是 bash 用户,则编辑~/.cshrc并添加

设置路径 = ( $path ~/PocketMine )

就我个人而言,我会在组织方面更进一步。我会创建一个~/bin目录,并将你的启动脚本放在那里,也许有一个更独特的名称,例如pmstart(它是一个 shell 脚本并不重要,是吗?也许有一天你想用 Python 或其他东西重新实现它。.sh就足够了在可执行文件上通常是一个坏主意,因为您公开并硬编码了最终用户不关心的实现细节(实现语言),并且在此过程中不必要地致力于该实现细节)。

您的 $PATH 可能已经包含 $HOME/bin,但如果没有,您可以类似地添加它。

sbin最后,关于哪些内容进入目录以及哪些内容进入目录有历史惯例/最佳实践binsbin通常保留用于管理员工具,而bin用于一般最终用户实用程序。

答案2

如果你只是想有一个更短的运行方式~/PocketMine/start.sh,你可以为其创建一个别名。添加以下行~/.bashrc并调用pm以运行该脚本:

alias pm=~/PocketMine/start.sh

如果您需要首先更改到脚本的目录,请将其设为函数:

function pm (
  cd ~/PocketMine && exec ./start.sh "$@"
)

如果您希望能够从另一个脚本而不仅仅是从交互式 shell 调用此快捷方式,请将快捷方式设置为您放入$PATH.该脚本需要是一个可执行文件(例如chmod a+rx ~/bin/pm)并包含

#!/bin/sh
cd ~/PocketMine && exec ./start.sh "$@"

相关内容