Когда я соединяюсь по ssh с удаленными хостами, все - просто единственный шрифт/цвет. Я хотел бы иметь цвета как, я делаю локально, например, зеленый для исполняемого файла и синий для символьных ссылок и т.д. И таким образом, что, когда я выполняю разность мерзавца $ на хосте ssh, это показывает мне разность с цветами =)
Так как она была xterm на сервере, я решил, что что-то не так с .bashrc
И действительно! ls --color=auto
работает только когда вы подключены к TTY. Изменив все на просто --color
в .bashrc
на удаленном хосте, теперь все в красивых цветах.
Какое содержимое вашей переменной XTERM env на сервере, когда вы подключаетесь к ней?
~ > export | grep -i term
TERM=xterm
Кажется, цвета уже были установлены в ~ /.bashrc
для меня, и проблема в том, что ssh не использует файл bashrc. Вы можете использовать bashrc в сеансе ssh, добавив следующее в ~ / .bash_profile
:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Я попытался изменить ~. / 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
удаленного сервера.
У меня это сработало:
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.
В моем случае недостающая часть должна была иметь цветные ls, grep и т. Д., Которые можно было добавить, добавив псевдонимы в файл .bashrc:
alias ls='ls --color=auto'
alias grep='grep --color=auto'
и т. Д.
Выше есть комментарий от "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», и изменить это, но это работает, и теперь у меня есть другие дела.
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.
Я терял свой цвет при подключении через прокси, потому что TERM=dumb
, поэтому я исправил это:
ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"
Поскольку цвета работали нормально при прямом входе в систему, я просто раскомментировал строку 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)
У меня это сработало: просто откройте файл .bashrc в папке $ HOME и раскомментируйте строку force_color_prompt = yes