Как получить цветной терминал по ssh?

Когда я соединяюсь по ssh с удаленными хостами, все - просто единственный шрифт/цвет. Я хотел бы иметь цвета как, я делаю локально, например, зеленый для исполняемого файла и синий для символьных ссылок и т.д. И таким образом, что, когда я выполняю разность мерзавца $ на хосте ssh, это показывает мне разность с цветами =)

75
задан 5 December 2010 в 13:55

11 ответов

Так как она была xterm на сервере, я решил, что что-то не так с .bashrc

И действительно! ls --color=auto работает только когда вы подключены к TTY. Изменив все на просто --color в .bashrc на удаленном хосте, теперь все в красивых цветах.

38
ответ дан 22 November 2019 в 23:48

Какое содержимое вашей переменной XTERM env на сервере, когда вы подключаетесь к ней?

~ > export | grep -i term
TERM=xterm
8
ответ дан 22 November 2019 в 23:48

Кажется, цвета уже были установлены в ~ /.bashrc для меня, и проблема в том, что ssh не использует файл bashrc. Вы можете использовать bashrc в сеансе ssh, добавив следующее в ~ / .bash_profile :

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi
19
ответ дан 22 November 2019 в 23:48

Я попытался изменить ~. / Bashrc настройки (как на локальном, так и на удаленном сервере), но похоже, что это не работает.

Затем я заметил, что ~ / .bashrc удаленного сервера даже не работает будут выполнены, если я подключусь к нему через ssh. Поэтому я сделал ~ / .bashrc удаленного сервера для выполнения с помощью puttinng if [-f ~ / .bashrc]; тогда . ~ / .bashrc fi на удаленном сервере ~ / .bash_profile . (на основе https://stackoverflow.com/questions/820517/bashrc-at-ssh-login ).

Таким образом, это решение не требовало изменения каких-либо ~ / bashrc файлы напрямую, но это потребовало изменения файла ~ / bash_profile удаленного сервера, чтобы выполнялся файл ~ / bashrc удаленного сервера.

3
ответ дан 22 November 2019 в 23:48

У меня это сработало:

ssh -t my_host my_command

-t был ключом. Объяснение :

-t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs on a
        remote machine, which can be very useful, e.g. when implementing menu services.  Multiple -t
        options force tty allocation, even if ssh has no local tty.
31
ответ дан 22 November 2019 в 23:48

В моем случае недостающая часть должна была иметь цветные ls, grep и т. Д., Которые можно было добавить, добавив псевдонимы в файл .bashrc:

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

и т. Д.

4
ответ дан 22 November 2019 в 23:48

Выше есть комментарий от "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

to:

# 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», и изменить это, но это работает, и теперь у меня есть другие дела.

2
ответ дан 22 November 2019 в 23:48

Dalam keadaan saya, saya baru-baru ini memasang chef-local dan ia meminta saya menambahkan baris ke .bash_profile . Semasa saya log masuk, .bashrc tidak pernah dimuat lagi, kerana ia melihat .bash_profile .

Apa yang saya buat ialah menambahkan baris di .bash_profile :

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

Saya keluar dan masuk semula dan segera mendapatkan terminal berwarna saya.

3
ответ дан 22 November 2019 в 23:48

Я терял свой цвет при подключении через прокси, потому что TERM=dumb, поэтому я исправил это:

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"
1
ответ дан 22 November 2019 в 23:48

Поскольку цвета работали нормально при прямом входе в систему, я просто раскомментировал строку 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)

11
ответ дан 22 November 2019 в 23:48

У меня это сработало: просто откройте файл .bashrc в папке $ HOME и раскомментируйте строку force_color_prompt = yes

0
ответ дан 5 January 2021 в 23:57

Другие вопросы по тегам:

Похожие вопросы: