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

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

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

答案1

以交互方式,您始终可以通过在命令行上键入来运行脚本~/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

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

相关内容