ssh를 통해 컬러 터미널을 얻는 방법?


53

ssh를 통해 원격 호스트에 연결하면 모든 것이 단일 글꼴 / 색상 일뿐입니다. 로컬에서 수행하는 것과 같은 색상을 원합니다 (예 : 실행 파일의 경우 녹색, 심볼릭 링크의 경우 파란색). ssh 호스트에서 $ git diff를 실행할 때 색상으로 diff를 표시하도록 =)


연결중인 Ubuntu 서버입니까?
Stefano Palazzo

@ stefano-palazzo : 데비안.
Dima

답변:


35

서버에서 xterm 이었기 때문에 문제가 있다고 생각했습니다. .bashrc

그리고 실제로! ls --color=autoTTY에 연결된 경우에만 작동합니다. 원격 호스트 --color에서 모든 것을 간단하게 변경 .bashrc하고 이제 모든 것이 예쁜 색상입니다.


42
--color = auto를 어디에 넣었 는지 말하면 이 답변에 많은 도움이 될 것 입니다. 서버의 .bashrc? 어떤 명령?
rfay

8
이것은 여전히 ​​관련성이있는 오래된 질문이므로 우분투 시스템에서이를 추가하고 싶었습니다. 기본 .bashrc에는 색상에 허용되는 용어를 정의하는 case 문이 있습니다. .bashrc에 "case"$ TERM $ "줄이 있으면"xterm) color_prompt = yes ;; "를 추가하십시오. 또한 색상을 활성화합니다. 또한 "force_color_prompt = yes"줄의 주석을 해제하여 항상 전역 적으로 활성화 할 수 있습니다.
Mike E

2
나를 위해
고친

3
혼란 스러워요. "모든 것을 단순히 색으로 바꾸는 것"은 무엇을 의미합니까? 예를 볼 수 있습니까?
still_dreaming_1 17 :

1
로컬 호스트, 원격 호스트 또는 둘 다에 대해 이야기하고 있습니까?
Adam

19

이것은 나를 위해 일했다 :

ssh -t my_host my_command

-t열쇠였습니다. 설명했다 .


이것은 완벽하게 작동하며 일회성 작업에 매우 편리합니다. 감사!
XtraSimplicity

내가 한 때 나는 색상 화를 잃은 su -ssh 연결 프롬프트에서 명령을
dubis

10

색상이 이미 설정된 것처럼 보이며 ~/.bashrc문제는 ssh가 bashrc 파일을 사용하지 않는다는 것입니다. ssh 세션에서 다음을 추가하여 bashrc를 사용할 수 있습니다 ~/.bash_profile.

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi

1
이것은 나를 위해 일했으며 간단하고 효율적인 방법이었습니다!
Flith

7

서버에 연결할 때 서버에서 XTERM env 변수의 내용은 무엇입니까?

~ > export | grep -i term
TERM=xterm

$ 수출 | grep -i term 선언 -x TERM = "xterm"
Dima

4

필자의 경우 누락 된 부분에는 .bashrc 파일에 별칭을 추가하여 추가 할 수있는 ls, grep 등의 색상이 지정되었습니다.

alias ls='ls --color=auto'
alias grep='grep --color=auto'

기타


2

~./bashrc로컬 및 원격 서버에서 설정을 변경하려고 시도했지만 작동하지 않는 것 같습니다.

그런 다음 ~/.bashrcssh를 통해 원격 서버에 연결해도 원격 서버가 실행되지 않는다는 것을 알았 습니다. 그래서 원격 서버의 puttinng ~/.bashrc 의해 실행되도록 원격 서버를 만들었습니다 . ( https://stackoverflow.com/questions/820517/bashrc-at-ssh-login 기반 ).if [ -f ~/.bashrc ]; then . ~/.bashrc fi~/.bash_profile

따라서이 솔루션에는 ~/bashrc파일을 직접 변경할 필요가 없지만 ~/bash_profile원격 서버의 ~/bashrc파일을 실행 하려면 원격 서버의 파일을 변경해야했습니다 .


우분투는 기본적으로 사용 .profile하지 않고 .bash_profile기본적으로 사용 .profile합니다 .bashrc.
muru

맞아요. 그러나 .profilessh를 통해 로그인 할 때 기본적으로 실행됩니까?
chris544

예. 을 사용하여 재정의하지 않은 경우 .bash_profilebash는 .profile로그인 쉘로 시작할 때 실행 됩니다. 그리고 SSH는 bash를 로그인 쉘로 시작합니다.
muru

존재하는 ~/.profile경우 읽을 수없는 것이 맞습니다 ~/.bash_profile. 그러나 ~/.bash_profile기본적으로 우분투 에는 존재 하지 않습니까?
chris544

내 첫 번째 의견을 다시 참조하십시오. 아닙니다. 우분투는를 사용합니다 .profile.
muru

2

직접 로그인하는 동안 색상이 제대로 작동했기 때문에 force_color_prompt=yes파일 에서 줄의 주석 처리를 제거하여 ~/.bashrcssh 위에 색상을 제공했습니다.

# 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

(우분투 18.04 LTS)


이것은 가장 간단한 해결책 인 것 같습니다.
snwflk

1

내 상황에서 최근에 설치 chef-local했고에 줄을 추가하도록 요청했습니다 .bash_profile. 내가 로그인하면 .bashrc더 이상로드되지 않습니다 .bash_profile.

내가 한 것은 다음에 줄을 추가하는 것이 었습니다 .bash_profile.

source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"

로그 아웃했다가 다시 로그인하여 컬러 터미널을 바로 받았습니다.


0

위의 "Mike E"에서 나에 대한 답변이 들어있는 의견이 있지만 읽기가 어려울뿐만 아니라 .bashrc많이 사용하지 않으면 그가 무엇을 의미하는지 알아내는 것이 어렵습니다. 티.

약간 ~/.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

첫 번째 줄에서 "color"다음에 "| xterm"을 추가했거나 ssh가 "xterm-color"대신 "xterm"을 사용하는 이유를 알아 낸 다음 변경할 수 있다고 생각합니다. 지금해야 할 다른 일이 있습니다.


0

프록시를 통해 연결할 때 색이 없어져서 고쳤 TERM=dumb습니다.

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"

1
첫 번째 연결에서도 터미널을 할당해야합니다.
muru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.