当我做一些需要连续输入几十次 root 的事情时,我更喜欢将我的会话切换到 root 会话。在各种教程和说明我已经使用了互联网上,我看到了sudo su
,sudo su -
,sudo -i
和sudo /bin/bash
用来打开一个root会话,但我不会在这些当之间,或者说差异事项的区别清楚。
有人可以帮我解决这个问题吗?
这些是~/.profile
我的 13.10 附带的股票内容(已删除注释行):
if [ -n "$BASH_VERSION" ]; then
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)
这是从 Debian 继承的,但为什么 Canonical 决定保留它?据我所知,这不是标准的 *nix 方式,我见过各种系统都没有发生这种情况,所以我认为他们一定有充分的理由这样做。这可能会导致在运行登录 shell 时出现意外行为(例如,当 ssh 进入机器时),而用户不希望有~/.bashrc
来源。
我能想到的唯一好处是不要将用户与许多启动文件混淆,并允许他们.bashrc
单独编辑并读取该文件,而不管 shell 类型。然而,这是一个可疑的好处,因为为登录和交互式 shell 设置不同的设置通常很有用,这会阻止您这样做。此外,登录 shell 通常不在图形环境中运行,这可能会导致错误、警告和问题(天哪!),具体取决于您在这些文件中设置的内容。
那么为什么 Ubuntu 会这样做,我错过了什么?
我连接到远程外壳,许多键无法正常工作,例如箭头和转义键。这个答案Arrow keys, tab-complete not working表明我可能在错误的外壳中,所以我参考了如何确定我正在使用的当前外壳?. 使用所描述的方法,我得到了奇怪的结果。
echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)
但
echo $0
sh
Run Code Online (Sandbox Code Playgroud)
我使用的是哪个外壳?