Коли я підключаю через ssh до віддалених хостів, все є лише одним шрифтом / кольором. Я хотів би мати кольори, як у мене локально, наприклад, зелений для виконуваного файлу та синій для символьних посилань тощо.
Коли я підключаю через ssh до віддалених хостів, все є лише одним шрифтом / кольором. Я хотів би мати кольори, як у мене локально, наприклад, зелений для виконуваного файлу та синій для символьних посилань тощо.
Відповіді:
Оскільки це було xterm на сервері, я зрозумів, що щось не так .bashrc
І справді! ls --color=auto
працює лише тоді, коли ви підключені до TTY. Зміна все просто --color
в .bashrc
на віддалений хост , і все це в красивих квітів в даний час.
su -
командував у підказці ssh-з'єднання
Схоже, кольори ~/.bashrc
для мене вже були встановлені , і проблема полягає в тому, що ssh не використовує файл bashrc. Ви можете використовувати bashrc у своєму сеансі ssh, додавши наступне до ~/.bash_profile
:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Який зміст вашої змінної XTERM env на сервері під час підключення до нього?
~ > export | grep -i term
TERM=xterm
У моєму випадку відсутня частина повинна була мати кольорові ls, grep тощо, які можна додати, додавши псевдоніми у файл .bashrc:
alias ls='ls --color=auto'
alias grep='grep --color=auto'
тощо.
Я спробував змінити ~./bashrc
налаштування (і на локальному, і на віддаленому сервері), але, схоже, це не спрацювало.
Потім я помітив, що ~/.bashrc
віддалений сервер навіть не виконується, якщо я підключуюся до нього через ssh. Тому я зробив ~/.bashrc
віддалений сервер для виконання puttinng 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
робить джерело .bashrc
.
.profile
виконується за замовчуванням під час входу через ssh?
.bash_profile
, bash запускається .profile
при запуску як оболонка входу. І SSH починає bash як оболонку входу.
~/.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)
У моїй ситуації я нещодавно встановив, chef-local
і мене попросили додати рядок до .bash_profile
. Коли я входжу, .bashrc
більше ніколи не завантажую, бо бачив .bash_profile
.
Що я зробив, це додати рядок у .bash_profile
:
source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"
Я вийшов із системи та повернувся назад та одразу отримав свій кольоровий термінал.
Зверху є коментар з "Майка Е", який містив для мене відповідь, але його не тільки важко читати, це важко зрозуміти, що він означає, якщо ти .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
Я думаю, що я міг би просто додати "| xterm" після "color" в першому рядку, або викопати і зрозуміти, чому ssh використовує "xterm" замість "xterm-color" і змінити це, але це працює і я зараз є інші речі.
Під час підключення через проксі я втрачав свій колір, TERM=dumb
тому я це виправив:
ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"