sudo 与其作为参数接收的指令之间的独立性

sudo 与其作为参数接收的指令之间的独立性

在此处输入图片描述

我不明白为什么目录 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

相关内容