Как перейти с csh на bash в качестве оболочки по умолчанию

34

У меня в cshкачестве оболочки по умолчанию, как показано echo $SHELL. Я хочу переключиться в bashкачестве моей оболочки по умолчанию. Я попробовал следующие подходы безрезультатно:

  1. С chshя получаю:

    chsh: can only change local entries; use ypchsh instead.
  2. С ypchshя получаю:

    ypchsh: yppasswdd not running on NIS master host ("dcsun2").

У меня есть только .chsrcв моем домашнем каталоге, и я не могу найти какие-либо .profileфайлы в /etc. Как я могу изменить оболочку по умолчанию на bash?

Sumod
источник
4
Может быть полезно узнать, какой у вас тип Unix.
энзотиб

Ответы:

44
  1. Убедитесь, что вы bashустановили.

  2. Узнайте местоположение bash:

    which bash

    или

    whereis bash

    Ниже я предполагаю, что местоположение /bin/bash.

    а) Если у вас есть права администратора, просто запустите от имени пользователя root:

    usermod -s /bin/bash YOUR_USERNAME

    (замена YOUR_USERNAMEна ваше имя пользователя).

    б) если у вас нет адм. права, вы все равно можете просто запустить bash --loginпри входе в систему, поставив следующую строку в конце вашего .cshrcили .profile(в вашем домашнем каталоге):

    setenv SHELL /bin/bash
    exec /bin/bash --login
rozcietrzewiacz
источник
2b. Проверьте, bashуказан ли /etc/shellsправильный путь.
manatwork 13.09.11
@manatwork Это было бы актуально для 2a , а не 2b. И только полезно в странной / сломанной настройке системы для определения, почему решение не сработало.
rozcietrzewiacz
1
1. SHELL = / bin / bash выдает ошибку команды not found. 2. Ваше решение дает мне оболочку bash в качестве подсказки. Но это не меняет мою оболочку входа в систему. Спасибо за помощь, хотя.
Sumod
1
Вот что я сделал, чтобы решить эту проблему. 1. exec / bin / bash --login в файле .cshrc 2. установить SHELL = / bin / bash и затем экспортировать SHELL в файл / etc / profile. Спасибо.
Sumod
2
Ах, прости - я имел в виду первую строчку export SHELL=/bin/bash. На самом деле есть лучший способ, чем это - см. Обновление.
rozcietrzewiacz
13

Обратитесь к системному администратору. Он все неправильно настроил. Если вы системный администратор, значит, вы все настроили неправильно.

Сообщение об ошибке выглядит довольно просто. Вы не yppasswdработали на dcsun2. Должен быть.

Но быстрый поиск в Google приводит к этому результату, который указывает на то, что вы получите эту ошибку, если yppasswdона работает как на клиенте, так и на сервере. В этом случае отключите его на клиенте.


Если вы застряли с csh в качестве оболочки входа в систему, вы все равно можете заставить его вызывать bash при входе в систему. Вставьте в него следующие команды ~/.login(см. Также Изменение оболочки по умолчанию без привилегий chsh или права администратора ):

sleep 2
if (-x /usr/local/bin/bash) then
  exec /usr/local/bin/bash -l
endif

Замените /usr/local/bin/bashна правильный путь, если это необходимо. Если все работает, удалите sleep 2(что приводит к задержке, во время которой вы можете нажать, Ctrl+Cчтобы перейти к приглашению csh, если что-то пойдет не так).

bahamat
источник