在我的bashrc文件中,我有n个别名。但是,如果我通过shell脚本执行, 它不会给出预期的产出。为什么会这样。有什么办法吗? 解决这个问题。
提前致谢。
答案 0 :(得分:1)
别名(使用alias name=value
设置)仅在交互式上下文中使用 ,即。即当用户在命令行上键入内容时。它们从不由脚本执行(除非使用shopt -s expand_aliases
显式调整非交互式shell以执行此操作):
#!/bin/bash
alias ttt=date
ttt # will fail!
获取定义别名的配置脚本不会改变任何相关内容。脚本根本不会执行别名。
要实现您的目标,请将别名重写为shell函数:
#!/bin/bash
ttt() {
date
}
ttt # will succeed!
Shell函数可以完全替换别名,但还有一些事情需要了解和考虑:
export -f ttt
。cd
或ls
。cd
,仍然可以访问被覆盖的内置shell(例如builtin cd /my/direc/tory
)。