当我发出时,alias --help
我得到这个输出:
alias: usage: alias [-p] [name[=value] ... ]
据我了解,您需要做的就是输入别名并提供脚本文件的实际路径,如下所示:
alias scr = /usr/local/tools/some_script.sh
但是,我注意到创建别名时有时会提供 2 个路径 - 例如,我alias scr
在公司计算机上发出命令并得到以下输出:
alias scr = 'sudo /bin/sh /usr/local/tools/some_script.sh'
/bin/sh
在这种情况下引入额外路径的目的是什么?
/bin/sh 仅包含 bash 目录的符号链接:
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 6 2017 /bin/sh -> bash
答案1
通过定义的别名
alias scr='sudo /bin/sh /usr/local/tools/some_script.sh'
(在 周围有空格=
是一个错误),调用通过使用脚本的路径名作为参数显式调用shell 解释器sudo
来运行脚本。/usr/local/tools/some_script.sh
/bin/sh
是下可执行文件/bin/sh
的路径名(在您的情况下,它是指向 的符号链接,但这并不重要)。它用于运行shell 脚本。在这种情况下, at 的脚本可能是为 编写的脚本,因此别名确保它作为解释器被调用。sh
/bin
bash
sh
/usr/local/tools/some_script.sh
sh
/bin/sh
如果脚本是可执行的并且有一个#!
指向有效脚本解释器的 -line 作为其第一行,则/bin/sh
可以删除该位。
所以,简而言之,别名允许您运行命令
/bin/sh /usr/local/tools/some_script.sh
只需输入 root 身份即可scr
。