iTerm 2 - 切换用户后的奇怪问题

iTerm 2 - strange issues after switching a user

我在 Mac 上使用 iTerm 2 登录远程 Ubuntu 系统。当我使用 ssh 和基于密钥的身份验证建立连接时,iTerm 2 通常会提供一些漂亮的颜色。

但是,当我使用 user/password 身份验证登录时,我发现了一些奇怪的问题。

  1. 颜色突出显示功能消失了。 lsvim 等到处都是黑白显示。我试过将颜色滑块移动到完全对比度,然后再移动回来,但没有帮助。

  2. Tab 键不再自动完成。例如,如果我键入 vim b+tab,它不会完成以 b 开头的文件名。相反,它会插入一个制表符 space.

我还尝试通过 ssh 密钥连接到远程机器(颜色显示正确,选项卡有效),然后通过 su username 命令切换到另一个用户。但是登录后我又遇到了同样的问题。我为此搜索了很多,但没有找到任何解决方案。

我该如何解决这个问题?

我相信,这不是 iTerm 问题。在远程系统的 .bashrc 中,将 #force_color_promptno 更改为 yes

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

如果这已经设置,但您仍然面临同样的问题,那么问题是 ssh 没有使用 bashrc 文件。您可以通过将以下内容添加到 ~/.bash_profile:

在您的 ssh 会话中使用 bashrc
if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi

我终于用下面的代码解决了这个问题:

case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi