如果bash别名不能接受参数,为什么这些别名有效?

时间:2016-02-06 08:20:23

标签: linux bash shell alias

作为一个天真的菜鸟,我创建了几个用于接受参数的bash别名,它们完全按预期工作。然而,我试图制作更多这样的别名,但这些不会按预期工作。

这个问题导致我在这里,我了解到bash别名不接受参数。相反,您必须创建一个函数。例如,请参阅herehere

所以,假设" bash别名不接受参数"共识是正确的,为什么所有这些都有效?

alias pacss='pacman -Ss '
alias pacs='sudo pacman -S '
alias yausnc='yaourt -S --noconfirm '

当我说这些"工作"我的意思是,例如,打字' pacs package'导致提示我输入密码,提示确认,然后检索并安装包。

那么,为什么这些别名有效呢?他们接受的术语是否在技术上不被认为是参数'?这是Arch(或Manjaro,我正在使用)的特质吗?时空连续体中的一个洞?

任何澄清都应该受到赞赏。

编辑:感谢您解答这些问题的答案并不是要求争论。我不太明白我的第一个示例与以下尝试的别名有何不同,后者不起作用:

alias lping='ping 192.168.1.'

此操作失败,因为ping执行时没有附加数字I类型。我的意图是能够输入例如lping 123并让bash执行" ping 192.168.1.123"但相反它表示"未知主机192.168.1。"

1 个答案:

答案 0 :(得分:5)

不,他们接受的条款"没有被称为"论证"。
Bash别名只是文本替换 也就是说,当你写

pacs

bash用

替换它
sudo pacman -S 

当你写

pacs package

bash用

替换它
sudo pacman -S package

换句话说,参数不会传递给别名 - 别名之后的字符只会附加到别名扩展到的地方。