我在.bashrc
里面设置了一些我需要在shell脚本中看到的别名我无法修改。
所以,只要我不能扩展该脚本中的别名,我还有什么选择?
(例如,我需要将python2.6
定义为与python
相同)
答案 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脚本中的别处是一个支持噩梦。另一种方法是使用完整命令,并推荐使用。