измените оболочку в Solaris/SunOS для Вашего пользователя только без доступа к/etc/passwd

Это - все там на экранной странице справочника:

Можно сделать это из командной строки когда Вы экран "Пуск":

- h цифра

    Specifies the history scrollback buffer to be num lines high.

Или из .screenrc файла:

цифра defscrollback

То же как scrollback управляет за исключением того, что настройки по умолчанию для новых окон изменяются. Начальная установка равняется 100.

Или из экрана, с помощью C-a: команда:

цифра scrollback

Установите размер буфера scrollback для текущих окон к цифровым строкам. Значение по умолчанию scrollback является 100 строками. См. также команду "defscrollback" и использование "C-a i" для просмотра текущей установки.

4
28.06.2013, 23:44
3 ответа

SHELL=newshell; exec "$SHELL" прием был уже покрыт.

Теперь, если Вы также хотите, чтобы команды, которым работают ssh, использовали Вашу новую оболочку. Если текущая оболочка входа в систему bash, можно добавить это к Вашему ~/.bashrc:

if [ -n "$BASH_EXECUTION_STRING" ]; then
  export SHELL=/bin/zsh
  exec "$SHELL" -c "$BASH_EXECUTION_STRING"
fi

Это выполнится something с новой оболочкой каждый раз, когда bash запускается с bash -c something и это читает ~/.bashrc.

Оболочки, запущенные с bash -c something обычно не читайте ~/.bashrc. Исключение когда они bash называют sshd или rshd, или на bash -ic something.

Вы могли добавить проверку на [ -n "$SSH_CONNECTION" ] если Вы только хотите покрыть ssh случай.

4
27.01.2020, 20:47
  • 1
    Да, $BASH_EXECUTION_STRING блок в .bashrc и "прием" в .profile работа. –  Emanuel Berg 29.06.2013, 00:47
  • 2
    Почему бы не сделать тест [[ $- != *i* ]], т.е. этот экземпляр удара не является интерактивным? –  Gilles 'SO- stop being evil' 29.06.2013, 01:10
  • 3
    @Gilles Linux: Хотите объяснить, как это было бы улучшением? –  Emanuel Berg 01.07.2013, 00:25
  • 4
    @EmanuelBerg, Почему Вы хотели бы явный вызов bash -ic 'somecommand' работать zsh -ic 'somecommand' вместо этого? –  Gilles 'SO- stop being evil' 01.07.2013, 00:30
  • 5
    @Gilles: Вы говорите, что это должно быть похожим выше, только условие, измененное в то, что Вы предлагаете? циклические устройства –  Emanuel Berg 01.07.2013, 00:38

метод № 1: с chsh

Обычно можно использовать команду chsh изменить Вашу оболочку, не имея необходимость иметь доступ к /etc/passwd. Это - файл, который обычно перечисляет Вашу оболочку по умолчанию, например:

saml:x:500:501:Sam M. (local):/home/saml:/bin/zsh

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

$ chsh --list-shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/zsh

Для изменения оболочки, можно использовать эту команду:

$ chsh -s /bin/zsh saml
Changing shell for saml.
Password: 
Shell changed.

Эффект очевиден, если Вы заглядываете /etc/passwd файл:

$ grep saml /etc/passwd
saml:x:500:501:Sam M. (local):/home/saml:/bin/zsh

Вы не будете сразу видеть изменения. Необходимо будет выйти из системы/войти для наблюдения его:

[saml@grinchy]~% echo $SHELL
/bin/zsh

метод № 2: /usr/bin/passwd -e

Если у Вас нет доступа к команде chsh который, по-видимому, Вы не делаете на Солярисе, и у Вас нет корневого доступа для изменения его в /etc/passwd, Вы смогли все еще делать то же с этой командой:

$ /usr/bin/passwd -e

метод № 3: вручную установите его метод

Если ни один из вышеупомянутых методов не является опцией, Вас в основном оставляют с этой последней опцией, которая должна добавить одно из следующих к файлам входа в систему Вашей существующей оболочки:

  1. оболочка по умолчанию:/bin/csh или/bin/tcsh

    Добавьте следующие строки к $HOME/.login:

    setenv SHELL=/bin/bash
    exec $SHELL
    
  2. оболочка по умолчанию:/bin/bash

    Добавьте следующее к $HOME/.bash_profile:

    export SHELL=/bin/zsh
    exec $SHELL
    

Некоторые дополнительные вещи рассмотреть с вышеупомянутым, можно сделать их более пуленепробиваемыми путем выполнения проверки, чтобы видеть, ли текущий $SHELL уже /bin/bash например, до установки его. Если это, ничего не сделайте, иначе идите вперед и выполните exec $SHELL.

Ссылки

5
27.01.2020, 20:47
  • 1
    К сожалению, Солярис не обеспечивает chsh, поэтому если локальный администратор не установил его, который не поможет здесь. –  alanc 28.06.2013, 06:17
  • 2
    @alanc - что относительно /usr/bin/passwd -e? –  slm♦ 28.06.2013, 06:39
  • 3
    passwd -e не будет работать также, если учетная запись пользователя централизованно не хранится (NIS, LDAP...), который не имеет место здесь. –  jlliagre 28.06.2013, 06:58
  • 4
    @jlliagre: Настолько бесспорный Вы? Я использую passwd -e изменить мою оболочку в моих системах Соляриса, которые не используют ни NIS, ни LDAP. –  bahamat 28.06.2013, 08:21
  • 5
    я предполагаю exec в .profile не приведет к бесконечному циклу, потому что Bash не читает этот файл при вызове этот путь...? –  tripleee 28.06.2013, 08:23

Вы не можете сделать этого с ванильной установкой Соляриса. Простое обходное решение должно было бы изменить Ваш профиль должностному лицу требуемая оболочка.

Например, принятие /etc/passwd указывает, что Ваша оболочка /bin/bash но Вы предпочитаете /bin/ksh:

$ tail -2 ~/.bash_profile
export SHELL=/bin/ksh
exec $SHELL

Остерегайтесь, чтобы не заблокировать Вас с опечаткой или не ввести бесконечный цикл с поддельным должностным лицом или логикой.

4
27.01.2020, 20:47
  • 1
    Установка $SHELL также удостоверился бы, что управляет, чтобы запустили оболочку (как xterm, vi...) также запускают Вашу новую предпочтенную оболочку. –  Stéphane Chazelas 28.06.2013, 10:38
  • 2
    @StephaneChazelas Действительно, ответ обновляется. –  jlliagre 28.06.2013, 12:10
  • 3
    я уже сделал это, включая какой предложенный @StephaneChazelas, только, для ssh user@host command это все еще пытается использовать удар, таким образом, это не будет работать на noglob и такой материал zsh. Обходное решение к тому - включает оболочку в команду? –  Emanuel Berg 28.06.2013, 23:32
  • 4
    Можно ли ясно заявить, что оболочка установлена для учетной записи и оболочки, которой Вы хотите, чтобы она была заменена? –  jlliagre 28.06.2013, 23:38
  • 5
    @jlliagre: Я сделал редактирование к вопросу. –  Emanuel Berg 28.06.2013, 23:46

Теги

Похожие вопросы