$SHELL хранит путь к оболочке по умолчанию в Linux?

Можно, вероятно, восстановиться без перезагрузки, не перезагружайте, пока Вы не попробовали некоторые другие вещи, потому что она не загрузится. Если у Вас все еще есть открытая попытка своей сессии SSH они:

  • То, где программы запущены от, установлено с помощью переменной $PATH. Можно добавить новое местоположение мусорного ведра для соединения каналом путем выполнения export PATH="$PATH:/newpath/to/bin:/newpath/to/usr/bin". Вы, возможно, должны добавить соответствующие sbin каталоги также. Можно также запустить программы вручную через их полный путь /path/to/mv [from] [to] например, должен работать, даже если mv находится в diffeent месте. Хитрая часть - то, что большинство команд собирается хотеть получить доступ к общим библиотекам, и Вы говорите /lib был перемещен так, необходимо установить переменную для того, где это также. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/newpath/to/lib/:/newpath/to/usr/lib

  • После того как можно выполнить некоторые основные команды, положить обратно материал! mv /path/to/subfolder/* / был бы в порядке! После того как все вернулось на месте, система должна обычно вести себя.

Если это перестало работать, загружая КАКОЙ-ЛИБО LiveCD и монтируя, что диск должен позволить Вам класть обратно папки, где они принадлежат. Вы не должны переустанавливать или даже использовать свои дистрибутивы livecd, просто необходимо смонтировать диск и положить обратно папки к правильному местоположению на диске. Много основанного на Linux спасательного диска специализирует на предоставлении Вам всего несколько основных консольных инструментов, чтобы сделать этот вид восстановления.

3
17.11.2010, 17:11
5 ответов

Это не на 100% верно. Например:

$> echo $SHELL
/bin/bash
$> /bin/ksh
$] echo $SHELL
/bin/bash

$SHELL содержит родительскую оболочку для Вашей сессии, которая обычно является Вашей оболочкой входа в систему, как продиктовано Вашей пользовательской записью в/etc/passwd. Более ясно $SHELL является родительской оболочкой от который Ваша текущая порожденная сессия. В моем примере текущая оболочка, Korn, технически работает в Bash, который является, почему $SHELL был не изменен.

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

5
27.01.2020, 21:10

Нет, это не связано с оболочкой по умолчанию.

Оболочка системного значения по умолчанию определяется в /etc/default/useradd файл.

Ваша оболочка по умолчанию определяется в /etc/passwd файл. Можно изменить его chsh команда.

$SHELL переменные обычно хранят текущий исполнимый путь оболочки. Каждая оболочка ведет себя по-другому по этому вопросу. Например, удар устанавливает переменную SHELL, если это сброшено, когда это запускается, иначе это оставляет его без изменений. tcsh не поддерживает эту переменную вообще.

2
27.01.2020, 21:10
  • 1
    я сделал echo $SHELL от удара. Затем текущий исполнимый путь оболочки должен был относиться, чтобы колотить, исправиться? –  Lazer 17.11.2010, 18:56
  • 2
    ... Я проверил более тщательно и отредактировал ответ. –  andcoz 17.11.2010, 20:01

Переменная для Вашей информации ("Эй, под какой оболочкой я работаю?"), а не путь Вы устанавливаете оболочку. Так как переменные среды Unix могут только распространить вниз к дочерним процессам и не назад до родителей, обычно переменные среды как это являются описательными а не параметрами конфигурации.

Для наблюдения оболочки по умолчанию посмотрите запись в /etc/passwd, и изменить это, работать chsh. (Это предполагает, что Вы не используете NIS или LDAP для этой информации; в этом случае используйте getent passwd $USERNAME.) И как andcoz примечания, начальные значения по умолчанию для новых пользователей, добавленных со стандартом useradd программа находится в /etc/default/useradd.

2
27.01.2020, 21:10

“Оболочка по умолчанию “для системного администратора Unix - то, что хранится в столбце “оболочки” пользовательской базы данных. Это - программа, которая вызывается, когда Вы входите в систему в текстовом режиме (на консоли текстового режима, или по сети через, например, ssh).

” Оболочка по умолчанию” для приложения Unix также sh или $SHELL. Существует некоторое изменение относительно ли $SHELL предназначается, чтобы быть интерактивной оболочкой или оболочкой для запущения скриптов. Спецификация POSIX неоднозначна в том отношении, отражая отличающуюся практику:

Эта переменная должна представить путь предпочтительного интерпретатора командного языка пользователя. Если этот интерпретатор не соответствует Командному языку Shell в Shell и объеме Утилит Станд. IEEE 1003.1-2001, Главы 2, Командного языка Shell, утилиты могут вести себя по-другому по сравнению с описанными в Станд. IEEE 1003.1-2001.

Тот бит о предпочтительном командном языке означает, что некоторые приложения могут попробовать к командам выполнения в $SHELL, использование POSIX окружает синтаксис команды. Однако нормальный способ выполнить команду оболочки в приложении Unix является через функции таким как system, который, как предполагается, находит подходящую оболочку независимо от значения $SHELL переменная среды. Bash и ksh являются примерами совместимых POSIX оболочек. Zsh приближается. Csh отличается, и можно иногда сталкиваться с проблемой из-за SHELL будучи установленным на csh (это не очень распространено, поскольку большинство приложений действительно звонит sh и csh достаточно совместим для основного использования).

На практике, для пользователя UNIX, $SHELL Ваша предпочтительная интерактивная оболочка, т.е. что Вы хотите видеть при запуске эмулятора терминала. Это не должно совпадать с Вашей оболочкой входа в систему ¹: можно установить его в Вашем .profile или .login.

¹, Например, я обычно уезжаю, любая оболочка входа в систему является значением по умолчанию, поддержите Совместимое с границей .profile, но набор SHELL к zsh, если это доступно.

1
27.01.2020, 21:10

Я всегда понимал переменные окружения, чтобы быть консультацией к программам, которые Вы запускаете. $SHELL был бы оболочкой, которую Вы хотите, чтобы программа запустила, когда это должно выполнить оболочку. Сравните с $EDITOR, Вы посылаете программу по электронной почте, мог бы использовать его для решения который редактор предложить Вам. B/c эти переменные окружения так же легки изменить Вас, не может действительно полагаться на них как заключительное слово на том, на что действительно похож мир.

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

0
27.01.2020, 21:10

Теги

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