如何在ssh上获得彩色终端?
当我通过ssh连接到远程主机时,一切都只是一种字体/颜色。 我希望有像我在本地做的颜色,例如绿色用于可执行文件,蓝色用于符号链接等。这样当我在ssh主机上运行$ git diff时,它显示我带有颜色的差异=)
嗯。 因为它是服务器上的xterm,我认为.bashrc
的确! --color=auto
仅在连接到TTY时有效。 改变一切简单 – 在.bashrc
--color
,现在一切都是漂亮的颜色。
似乎颜色已经在~/.bashrc
为我设置了,问题是ssh不使用bashrc文件。 您可以通过在~/.bash_profile
添加以下内容在ssh会话中使用bashrc:
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
这对我有用:
ssh -t my_host my_command
-t
是关键。 解释 。
连接到服务器上时,XTERM env变量的内容是什么?
~ > export | grep -i term TERM=xterm
我尝试更改~./bashrc
设置(在本地和远程服务器上),但它似乎不起作用。
然后我注意到,如果我通过ssh连接它,远程服务器的~/.bashrc
甚至都不会被执行。 所以我做了远程服务器的~/.bashrc
来执行puttinng if [ -f ~/.bashrc ]; then . ~/.bashrc fi
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
在远程服务器的~/.bash_profile
。 (基于https://stackoverflow.com/questions/820517/bashrc-at-ssh-login )。
所以这个解决方案不需要直接更改任何~/bashrc
文件,但它确实需要更改远程服务器的~/bash_profile
文件,以便远程服务器的~/bashrc
文件被执行。
在我的情况下,我最近安装了chef-local
,它让我向.bash_profile
添加一行。 当我登录时, .bashrc
永远不会加载,因为它看到了.bash_profile
。
我所做的是在.bash_profile
添加一行:
source .bashrc export PATH="/opt/chefdk/embedded/bin:$PATH"
我退出并重新进入并立即获得了彩色终端。
在我的情况下,缺少的部分是有颜色的ls,grep等,可以通过在.bashrc文件中添加别名来添加:
alias ls='ls --color=auto' alias grep='grep --color=auto'
等等
上面的“Mike E”中有一条评论包含了我的答案,但它不仅难以阅读,如果你不经常使用.bashrc
,很难弄明白他的意思 – 我别。
拧了一下之后,我通过更改我用ssh登录的机器上的~/.bashrc
的以下行来获得所需的结果:
# 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”并改变它,但是这有效,我还有其他事情要做。
我通过代理连接时失去了颜色,因为TERM=dumb
所以我修复了它:
ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"