作为函数参数linux bash传递别名

大家好,我正在学习如何在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

我将如何去实现这个?

别名不是一个单词替换,而是一个新创建的小命令:

 $ 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 

我想知道如何使一个函数识别一个参数作为别名

要从字面上回答你的问题,你可以在你的函数中使用type -t来确定它的参数是否是一个别名。 但是这可能不是你想要的。

AFAIK,你真正想要的是不可能的。 从Bash手册 (重点是我的):

当别名用作简单命令的第一个单词时,别名允许替换字符串。

你可以得到的最接近的是:

 go `home`