执行shell脚本选项

执行shell脚本选项

我通常习惯cd Directory/Directory/指向 shell 目录,然后输入bash shell.sh,但我想知道是否有一种更简单的方法来用一行执行我的 shell 和位置?我确实经常跳到不同的文件夹。

示例:包含名为 alpha 的 shell 脚本的 unix 文件夹

cd Desktop/unix
bash alpha.sh

答案1

如果您设置脚本文件可执行:

chmod o+x alpha.sh

并在顶部包含适当的 shebang ( #!/bin/bash),您不必使用 来调用它bash。请man chmod参阅 参考资料 的解释o+x;你可能更喜欢a+x

至于路径,您可以根据 Rahul 的建议添加它,或者您可以执行类似的操作而不将其添加到 $PATH 中,例如:

export SCRIPTS=~/Desktop/unix

现在可以使用其中的任何可执行文件:

$SCRIPTS/alpha.sh

答案2

您可以PATH在您的系统环境中设置,例如。

export PATH=$PATH:/absolute/path/Desktop/unix

您也可以将上面的行放入~/bashrc文件中,然后您不需要再次设置该路径

注意:- 您的脚本应该在该位置可执行,然后您可以从任何目录运行脚本。

参考页面了解更多信息

答案3

从不同的角度回答,可能有助于更好地理解 *nix 环境。

您在 *nux 中知道的所有命令/实用程序都存在于某个或其他目录中,您可以使用whereis, 或which命令找到这些目录

例子

$ which ls
/bin/ls
$ which sort
/usr/bin/sort

那么,如何找到您尝试执行命令的这些内容呢?

答案是PATH变量。如果执行 a echo $PATH,您将看到以冒号:分隔的目录列表。

$PATH 的示例输出

/home/mtk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.9.1/bin/:/usr/local/ant/apache-ant-1.8.3/bin

因此,如果您将自己的可执行文件放置在这些位置之一,您将能够像其他系统命令一样运行它。或者,您可以将自己定义的目录添加到此列表中,方法是将其附加到变量PATH并导出它,以便它可用于完整的 shell,例如

export PATH=$PATH:/home/mtk/myUtilities/bin

您可能希望将此特定行添加到.bashrc文件中,以便不需要每次启动 shell 时都执行上述命令。

只是为了好玩

如果更改PATH变量,将其设为空,您将得到无用的 shell,直到PATH再次正确重置。

$ export PATH=""
$ ls
bash: ls: No such file or directory
$ which pwd
bash: which: No such file or directory

相关内容