在shell脚本中可以看到别名的替代方案

时间:2012-06-21 08:20:42

标签: bash shell alias

我在.bashrc里面设置了一些我需要在shell脚本中看到的别名我无法修改

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

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

4 个答案:

答案 0 :(得分:5)

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

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

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

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

Bash manual说:“对于几乎所有目的,shell函数优先于别名。”

编写良好的脚本使用可执行文件的绝对路径(例如/bin/mv)。这样做会阻止这种技术的工作,是一种很好的安全措施。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

Bash函数比别名更通用,可以起到同样的作用。

答案 3 :(得分:0)

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