当我通过ssh连接到远程主机时,所有内容都只是一个字体/颜色。我想像本地一样使用颜色,例如,绿色表示可执行文件,蓝色表示符号链接等。因此,当我在ssh主机上运行$ git diff时,会向我显示diff with colors =)
当我通过ssh连接到远程主机时,所有内容都只是一个字体/颜色。我想像本地一样使用颜色,例如,绿色表示可执行文件,蓝色表示符号链接等。因此,当我在ssh主机上运行$ git diff时,会向我显示diff with colors =)
Answers:
因为它是服务器上的xterm,所以我发现问题出在 .bashrc
的确如此!ls --color=auto
仅在您连接到TTY时有效。将所有内容更改为仅--color
在.bashrc
远程主机上即可,并且现在所有内容都具有漂亮的颜色。
连接到服务器上的XTERM env变量的内容是什么?
~ > export | grep -i term
TERM=xterm
我尝试更改~./bashrc
设置(在本地和远程服务器上),但似乎不起作用。
然后我注意到,~/.bashrc
如果我通过ssh连接到远程服务器,它甚至都不会执行。因此,我将~/.bashrc
远程服务器制成要通过放置if [ -f ~/.bashrc ]; then . ~/.bashrc fi
在远程服务器的~/.bash_profile
。(基于https://stackoverflow.com/questions/820517/bashrc-at-ssh-login)。
因此,此解决方案不需要~/bashrc
直接更改任何文件,但需要更改~/bash_profile
远程服务器的~/bashrc
文件,以便执行远程服务器的文件。
.profile
而不是.bash_profile
,默认情况下.profile
使用source .bashrc
。
.profile
通过ssh登录时默认情况下会执行吗?
.bash_profile
,则bash .profile
作为登录shell启动时会运行。SSH将bash作为登录shell启动。
~/.profile
如果~/.bash_profile
存在,则不读取是正确的。但是~/.bash_profile
默认情况下在Ubuntu 上不存在吗?
.profile
。
由于在直接登录时颜色可以正常工作,所以我只是取消注释force_color_prompt=yes
了文件中的行~/.bashrc
,这也给了我ssh上的颜色:
# 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
(Ubuntu 18.04 LTS)
上面的“ Mike E”中有一条评论为我提供了答案,但不仅难以阅读,而且如果您不经常使用,很难弄清楚他的意思.bashrc
-我不会t。
拧了一下之后,通过在~/.bashrc
使用ssh登录的机器上更改以下几行,我得到了所需的结果:
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
至:
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
xterm) color_prompt=yes;;
esac
我想我可以在第一行中的“颜色”之后添加“ | xterm”,或者挖出并弄清楚ssh为什么使用“ xterm”而不是“ xterm-color”并进行更改,但这有效并且我现在还有其他事情要做。