我通常习惯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