![](/img/trans.png)
[英]Why do exported variables but not aliases from .bash_profile work in non-login shells?
[英]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.