0

我已经设置.bashrc了一些别名,我需要在无法修改的 shell 脚本中看到这些别名。

所以,只要我不能在该脚本中扩展别名,我还有什么选择?

(例如,我需要定义python2.6为与 相同python

4

4 回答 4

6

定义和导出函数而不是使用别名。

假设您的脚本mv不使用-ior-v并且您想添加它们,但无法修改脚本。

function mv () { command mv -iv "$@"; }
export -f mv

现在您的脚本将使用这些选项。您可以从命令行或包装脚本中定义函数。

Bash 手册说: “对于几乎所有目的,shell 函数都比别名更受欢迎。”

编写良好的脚本使用可执行文件的绝对路径(例如/bin/mv)。这样做会阻止此技术发挥作用,并且是良好的安全实践。

于 2012-06-21T11:09:06.353 回答
2

如果可以包装脚本,则可以在包装器中定义别名,并在脚本中定义源 ( . /path/to/script)。函数和别名都应该以这种方式工作。

如果不能,则必须将命令放在 PATH 中。作为符号链接或脚本。

于 2012-06-21T08:31:36.053 回答
1

Bash 函数比别名更通用,并且可以用于相同的目的。

于 2012-06-21T08:40:51.207 回答
0

有一个扩展别名的 shell 选项:shopt -s expand_aliases,但是由于某种原因它被关闭了 - shell 脚本中的别名是支持的噩梦。另一种方法是使用完整的命令,建议使用。

于 2012-06-21T08:32:13.323 回答