我不明白为什么目录 dir1 没有用相同的颜色显示。虽然这看起来可能不重要,但在我看来,这违反了计算中经常提到的独立性原则(我的教授在每次讲座中都会提到这一点)。
我知道“ls”是“sudo”的一个参数,但“sudo”难道不应该只是改变权限,然后不以任何方式干扰它作为参数接收的指令吗?
答案1
这种差异仅仅源于一个简单的选择ls
。
实际上你的ls
别名为ls --color=auto
。要查看它,请在终端中尝试,
type ls
这就是为什么你有彩色输出。但是当你使用sudo ls
它时/bin/ls
,它没有颜色选项。所以它无法显示彩色输出。
如果您尝试,/bin/ls
您也会得到无色输出。或者尝试sudo ls --color=auto
应该给您颜色的输出。
答案2
我相信这是因为您的用户octavian
和该用户的权限提升发生在两个不同的 shell 中。
Ubuntu 默认使用bash
作为用户的 shell。当您通过 运行命令时sudo
,shell 会更改为sh
。
下面是一个演示不同 shell 的屏幕截图。
您可以看到,我第一次运行 时ls
处于 bash shell 中。您可以发现,因为提示符记录了我的用户名、主机名和当前目录。
当我切换到 时sh
,提示发生了变化,因为它是一个具有不同功能的完全不同的shell。
有多种不同的 shell 可用,每种 shell 都具有不同的功能、提示符和自定义选项。可自定义性最高的 shell 之一是zsh
。