繁体   English   中英

如果bash别名不能接受参数,为什么这些别名起作用?

[英]If bash aliases cannot accept arguments, why do these aliases work?

作为一个天真的菜鸟,我创建了几个bash别名,旨在接受参数,并且它们完全按预期工作。 但是,我尝试再做一些这样的别名,这些别名无法按预期工作。

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

因此,假设“ 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时不会附加我键入的数字。 我的意图是能够输入例如lping 123并让bash执行“ ping 192.168.1.123”,但它却说“未知主机192.168.1”。

不,它们“接受”的术语不称为“参数”。
Bash别名只是文本替换。
也就是说,当你写

pacs

bash替换为

sudo pacman -S 

当你写的时候

pacs package

bash替换为

sudo pacman -S package

换句话说,参数不会传递给别名-别名后面的字符只会附加到别名扩展到的任何位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM