分页: 1 / 1

cmd=ls; $cmd的运行结果不像直接ls有颜色区分,why?

发表于 : 2015-04-09 11:45
Vizzt
在学习从gnu下载的Bash文档,其中说明了Bash对命令解析操作的步骤。
上机实验,分别用两种方式ls:

代码: 全选

cmd=ls
$cmd
结果字体都是一个颜色

代码: 全选

ls
结果有颜色区分

应该和Bash分析执行的步骤有关?
对其理解不深,感觉困惑。望大神分析下原因。

Re: cmd=ls; $cmd的运行结果不像直接ls有颜色区分,why?

发表于 : 2015-04-09 12:37
rosynirvana
因为默认情况下ls被alias成 ls --color=auto
你可以用alias查看

Re: cmd=ls; $cmd的运行结果不像直接ls有颜色区分,why?

发表于 : 2015-04-09 13:06
Vizzt
rosynirvana 写了:因为默认情况下ls被alias成 ls --color=auto
你可以用alias查看
我知道为什么后者有颜色显示;
我想知道的是为什么前者没有颜色显示?

Re: cmd=ls; $cmd的运行结果不像直接ls有颜色区分,why?

发表于 : 2015-04-09 13:13
Vizzt
哦,我好像懂了。
因为别名扩展在变量扩展之前执行,$cmd被扩展成ls之后,不会再用别名扩展一次了,对吧?

Re: cmd=ls; $cmd的运行结果不像直接ls有颜色区分,why?

发表于 : 2015-04-09 15:40
astolia
bash的manpage里对alias的时机写的还是很清楚的,自己去看一下