`sudo su` 和 `sudo fish` 的区别

Difference between `sudo su` and `sudo fish`

我 运行 fish (Friendly Interactive Shell) 作为我在 Ubuntu 14.04 中的标准终端,而不是 bash.

我注意到以下行为,但不知道其中是否是获得 root 访问权限的首选行为。

我可以输入命令sudo susudo fish,它们都会给我超级用户权限。(提示显示为root@ubuntu ~#
这些命令的行为有什么不同吗?

我唯一能理解的是,sudo su 使用位于 /root/.config/fish/ 的 fish 配置,而 sudo fish 使用我的主目录 /home/uloco/.config/fish 中的 fish 配置。

是否可以使用 sudo fish 来加密我的系统?如果我使用它,是否会对我的主目录中的文件进行任何所有者更改?

  • sudo su 以root用户的身份执行su,也就是说打开的shell就是/etc/passwd中用户的入口中给出的shell第6场。对于您的系统 root 用户,它可能是 /bin/fish。 shell 作为登录 shell 执行,因此执行 root 用户的 rc 脚本。

当您执行 sudo fish 时,应用程序 fish (shell) 就像您是 root 用户一样可执行,但在调用用户的环境中。这就是执行 fishs rc 脚本的原因。

你应该使用哪一个取决于你:

  • 你想要root的环境就像你以root登录系统一样吗?然后调用 sudo su.
  • 您想保留您的环境,如您的别名和 shells rc-scritps 中定义的此类内容吗?然后使用 sudo fish.

是否可以使用 sudo fish 来加密我的系统?

这只是环境,你不加密任何东西。

如果我使用它,我的主目录中的文件是否会发生任何所有者更改?

如果您不手动更改某些内容,则不会。