8

Я работаю над удаленной учетной записью Linux в университете, и, к сожалению, оболочкой по умолчанию является csh без табуляции. Как я могу изменить оболочку по умолчанию для моей учетной записи на bash? chsh не доступен.

4 ответа4

10

Вы, вероятно, должны попытаться спросить своих системных администраторов, могут ли они изменить вашу оболочку по умолчанию для вас. Если они не могут или не хотят (как в случае, когда я учился в колледже), я должен был добавить обходной путь

# Exec bash if using an interactive shell.
if ($?prompt) then
    setenv SHELL /path/to/bash
    exec $SHELL
endif

в .cshrc . (Конечно, обязательно замените /path/to/bash реальным путем. Это может быть даже версия bash которая находится в вашем домашнем каталоге, если предоставленная системой версия слишком устарела на ваш вкус.) Для повышения эффективности, то лучше сделать это еще в .cshrc , как это возможно, так что вам избежать дополнительной обработки .cshrc , который станет спорным когда bash заменяет csh процесса.

3

Вы можете просто связаться с

ssh -t yourhost bash

выполнить оболочку Bash автоматически при входе в систему.


Из комментариев ниже вы можете увидеть альтернативу

ssh -t yourhost exec bash

exec запустит новый процесс и выйдет из старого, поэтому процесс csh выйдет напрямую.

Если в конце команды добавить -l в качестве аргумента для Bash, он будет рассматриваться как оболочка входа, но, возможно, в этом нет необходимости.

0

Лучшее решение, которое я нашел, было одно на стеке обмена. Вот ссылка на стек, и вот решение:

создайте файл .profile в своем домашнем каталоге и вставьте следующее или добавьте в конец свой .profile, если он у вас уже есть.

case $- in
  *i*)
    # Interactive session. Try switching to bash.
    if [ -z "$BASH" ]; then # do nothing if running under bash already
      bash=$(command -v bash)
      if [ -x "$bash" ]; then
        export SHELL="$bash"
        exec "$bash"
      fi
    fi
esac
0

Я много искал, когда вы используете аутентификацию LADP через PAM, я думаю, что лучшее решение - поместить SHELL =/bin/bash exec /bin/bash в файл .profile в домашний каталог пользователя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .