如何从任何目录执行shell脚本

fzm*_*fzm 4 shell-script

.sh在我的主目录中编写了一个带有扩展名的简单脚本,我可以直接在我的主目录中运行该脚本,但我想从我所在的每个目录运行该脚本。我该怎么办?

Rob*_*rtL 6

以交互方式,您始终可以通过~/yourscript.sh在命令行上键入来运行您的脚本,但这是非常有限的,特别是如果您想编写更多调用您已经编写的脚本的脚本时。

一种更加集成和灵活的方法是将所有脚本放在一个目录中,然后将该目录添加到您的PATH环境变量中。

执行此操作后,您将能够键入yourscript.sh,无论您在哪个目录中,shell 都会找到您的脚本并执行它。

这是通常的做法:

  1. bin在您的主目录下创建一个目录并将mv您的脚本放入其中。
  2. 将所有脚本更改为可执行 ( chmod +x)。
  3. 确保您的PATH环境变量包含您的$HOME/bin目录。在某些系统上,默认情况下~/.profile会自动将您的$HOME/bin目录添加到该目录中PATH,因此请~/.profile在修改前检查您的目录。

让我用一些脚本来说明:

mkdir ~/bin
mv ~/*.sh ~/bin
chmod +x ~/bin/*
if ! grep 'PATH=.*HOME/bin' ~/.profile
then
    echo 'export PATH="$HOME/bin:$PATH"' >> ~/.profile
fi
. ~/.profile
echo "$PATH"      # you should see your bin directory
cd /tmp           # change to another random directory
type myscript.sh  # see if the shell finds your scripts
Run Code Online (Sandbox Code Playgroud)

如果您在 中看到您的bin目录PATH,那么最好注销并重新登录并更改到另一个目录并type yourscript.sh再次执行以确保一切设置正确。