如何告诉 bash 不要扩展别名

如何告诉 bash 不要扩展别名

我知道有一个简单的语法可以告诉 bash 不要扩展别名。但是,Google 没有找到它,我又懒得阅读 man bash。另外,答案应该在这个网站上。

答案1

在第一个字符前放置一个反斜杠。

$ alias ls="echo foo"
$ ls
foo
$ \ls
bin
Desktop
Documents
  ...

答案2

您可以使用commandshell 内置命令。它将仅执行在PATH或 shell 内置命令中找到的命令。它不会执行别名或 shell 函数。

例子:

alias ls='ls -l'
$ ls
drwxr-xr-x 3 user user 4096 2010-10-11 13:17 dir1
drwxr-xr-x 3 user user 4096 2010-10-15 15:37 dir2
$ function ls() {
> echo hello
> }
$ ls
hello
$ command ls
dir1  dir2

答案3

输入shopt -u expand_aliasesbash shell(-u 开关表示取消设置)。我建议阅读 shopt 的手册页。

答案4

正如 @bossNova 已经建议的那样,为了防止别名扩展:

shopt -u expand_aliases

对于那些好奇的人来说,设置别名扩展:

shopt -s expand_aliases

相关内容