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

sh/bash/dash/ksh/zsh等Shell脚本
回复
Vizzt
帖子: 3
注册时间: 2014-02-27 11:28
系统: Ubuntu 12.04

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

#1

帖子 Vizzt » 2015-04-09 11:45

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

代码: 全选

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

代码: 全选

ls
结果有颜色区分

应该和Bash分析执行的步骤有关?
对其理解不深,感觉困惑。望大神分析下原因。
rosynirvana
帖子: 893
注册时间: 2011-02-14 17:46

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

#2

帖子 rosynirvana » 2015-04-09 12:37

因为默认情况下ls被alias成 ls --color=auto
你可以用alias查看
Vizzt
帖子: 3
注册时间: 2014-02-27 11:28
系统: Ubuntu 12.04

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

#3

帖子 Vizzt » 2015-04-09 13:06

rosynirvana 写了:因为默认情况下ls被alias成 ls --color=auto
你可以用alias查看
我知道为什么后者有颜色显示;
我想知道的是为什么前者没有颜色显示?
Vizzt
帖子: 3
注册时间: 2014-02-27 11:28
系统: Ubuntu 12.04

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

#4

帖子 Vizzt » 2015-04-09 13:13

哦,我好像懂了。
因为别名扩展在变量扩展之前执行,$cmd被扩展成ls之后,不会再用别名扩展一次了,对吧?
头像
astolia
论坛版主
帖子: 6433
注册时间: 2008-09-18 13:11

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

#5

帖子 astolia » 2015-04-09 15:40

bash的manpage里对alias的时机写的还是很清楚的,自己去看一下
回复