大家好我正在学习如何在linux中使用.bashrc文件,因为我的标题声明我想知道如何使函数将参数识别为别名
我有一个名为home的别名,定义为:alias home=$HOME
并将函数定义为
function go(){
cd $1
ls $1
}
但当我做go home
时
我得到
bash: cd: home: No such file or directory
ls: cannot access home: No such file or directory
当我想要它去做$ HOME
我将如何实施?
答案 0 :(得分:5)
别名不是单词替换,而是新创建的小命令:
$ alias bla=ls
$ bla
file1
file2
file3
…
所以,它不能以你假设的方式使用。
您可能希望对此使用变量替换:
$ home=$HOME
$ function go() {
cd "$(eval echo \$"$1")"
}
$ go home
如果您想使用别名,尽管这是滥用行为,请尝试以下操作:
$ alias home=$HOME
$ function go() {
cd "$(type "$1" | sed -e 's/.*is aliased to .//' -e 's/.$//')"
}
$ go home
答案 1 :(得分:3)
我想知道如何使函数将参数识别为别名
要按字面意思回答您的问题,您可以在函数内使用type -t
来确定其参数是否为别名。但那可能不是你想要的。
AFAIK,你真正想要的是不可能的。来自Bash manual(强调我的):
别名允许字符串替换单词,当它用作简单命令的第一个单词时。
你最接近的是:
go `home`