我知道如果等号旁边有空格,bash 中的别名命令将不起作用。例如,
alias loadcode='vim *.c *.h Makefile'
有效,但是
alias loadcode ='vim *.c *.h Makefile'
或者
alias loadcode= 'vim *.c *.h Makefile'
或者
alias loadcode = 'vim *.c *.h Makefile'
不工作。为什么是这样?
答案1
因为alias
可以用来查询别名,以及一次设置多个别名:
$ alias foo # query for one alias
bash: alias: foo: not found
$ alias foo = bar # query for three aliaes
bash: alias: foo: not found
bash: alias: =: not found
bash: alias: bar: not found
$ alias foo=bar doo=dar # set two aliases
$ alias doo # query one alias
alias doo='dar'
$ alias foo = bar # query three, again
alias foo='bar'
bash: alias: =: not found
bash: alias: bar: not found
(不要问我为什么它说找不到别名=
,而不是告诉它是别名的无效名称。我认为是这样,我找不到设置该名称的别名的方法。)
当然,这样也符合 shell 变量赋值中空格的工作方式:
$ foo=bar doo=dar
$ echo "$doo"
dar
答案2
空间是允许,执行分隔命令行参数的通常 bash 职责。
特别是关于alias
......
给出alias
一个不包含在其中的参数=
,别名将尝试打印该名称的现有别名。
但是alias
在其中给出一个参数=
,然后它会创建新的别名。
如果您有冲动,可以将打印和定义结合在一行上。