Не знаю кому как, но лично я считаю, что лучший shell — это bash. Не буду перечислять все преимущества, но одно просто неоспоримое — привык я к нему :) Я вообще люблю консоль, но bash — особенно. Он какой-то уютный, что ли.
Но вот сегодня захожу на очередной удаленный сервер по ssh и попадаю в ненавистный мне tcsh. Всё б ничего и можно потерпеть, но хочется уюта :) Но я здесь не root, и мне особо не рады. Что делать?
Исправляется довольно просто: нужно прописать смену shell в настроечном файле, который считывается при логине. Для tcsh этот файл называется
.login
и находиться должен в моей домашней папке. Если его нет, то нужно создать и прописать в нем следующее:
if (-f /bin/bash) then
setenv SHELL /bin/bash
exec /bin/bash --login
end if
Эти строки заменяют существующий shell, загружаемый по умолчанию, на bash. В данном случае по умолчанию был установлен tcsh.
В случае другого shell решение немного изменится. Например, если по умолчанию загружается sh, то никакой .login не поможет — sh просто не знает о существовании такого файла. Для sh нужно исправлять файл
.profile
(он тоже должен находиться в домашней папке):
if [ $SHELL = "/bin/sh" ]; then
if [ -f /usr/bin/bash ]; then
SHELL=/usr/bin/bash
export SHELL
exec /usr/bin/bash --login
fi
fi
Маленький нюанс здесь — bash тоже считывает .profile и двойной if нужен здесь для того, чтобы исключить вероятность бесконечной рекурсии при загрузке bash.
Полный список соответствия разных shell'ов и настроечных файлов можно почитать здесь.
how about chsh?
ОтветитьУдалитьЭто было бы слишком просто :) Мы не ищем легких путей! :)
ОтветитьУдалитьНо если серьезно, то в моем случае ноги проблемы растут из правил корпоративной безопасности, в соответствии с которыми настроены почти все наши серверы. chsh на серверах просто нет. Совсем.
Вот, изощряемся, как можем :)