Зайти в оболочку линукс

Обновлено: 04.07.2024

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

Особенности оболочки входа, по крайней мере, реализованной в Bash, заключаются в следующем:

    оболочка входа в систему обрабатывает команды из /etc/profile, затем первый файл, который она находит среди

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

Как узнать, какие оболочки установлены в системе

Чтобы изменить оболочку по умолчанию для пользователя, нужно знать, какие оболочки доступны и как они правильно называются.

Один из способов узнать правильные названия оболочек и пути до исполнимых файлов — это запустить следующую команду:


Но предыдущая команда срабатывает не на всех дистрибутивах (работает на Arch Linux, но не работает на производных Debian).

Поэтому можно воспользоваться универсальным методом — посмотреть содержимое файла /etc/shells:


В файле shells собраны пути к действующим оболочкам входа.

/etc/shells — это текстовый файл, который содержит полные пути к действующим оболочкам входа. Этот файл просматривается программой chsh и доступен для запроса другими программами.

Имейте в виду, что есть программы, которые обращаются к этому файлу, чтобы узнать, является ли пользователь обычным пользователем; например, демоны FTP традиционно запрещают доступ пользователям с оболочками, не включёнными в этот файл.

Программа для смены оболочки пользователя — chsh

chsh — измените оболочку входа пользователя на постоянной основе.

Если вы временно хотите изменить шелл, то установите его и запустите. Примеры команд запуска различных оболочек:

chsh используется для изменения оболочки входа в систему. Если оболочка не указана в командной строке, chsh запрашивает её.

chsh поддерживает нелокальные записи (kerberos, LDAP и т.д.), если они связаны с libuser, в противном случае используйте ypchsh, lchsh или любую другую реализацию для нелокальных записей.

В качестве ОБОЛОЧКИ нужно указать одну из оболочек, как они перечислены в файле /etc/shells.

chsh примет полный путь к любому исполняемому файлу в системе.

Поведение по умолчанию для пользователей без полномочий root — принимать только оболочки, перечисленные в файле /etc/shells, и выдавать предупреждение для пользователя root. Его также можно настроить во время компиляции, чтобы выдавать предупреждение только для всех пользователей.

Смена оболочки с помощью usermod

Утилита usermod с опцией -s меняет оболочку указанного пользователя.

Например, чтобы заблокировать пользователя root, используйте следующую команду:


Как изменить оболочку Shell в Linux

Командная оболочка или командный интерпретатор в Linux — это программа, которая в текстовой среде выступает в качестве интерфейса между пользователем и операционной системой. Она интерпретирует вводимые команды с терминала и вызывает необходимые программы.

Когда вы работаете в терминале, именно командная оболочка обрабатывает вводимые вами команды. Более того, оболочки Linux поддерживают написание программ на языке оболочки.

Оболочки Linux

Одна из самых популярных командных оболочек — это оболочка Bash (Bourne Again Shell). Она используется по умолчанию в большинстве дистрибутивов Linux.

Существуют разные оболочки Linux. Можно отметить:

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

Как определить текущую командую оболочку

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

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

Способ 1

Переменная окружения SHELL хранит путь до исполняемого файла оболочки. Выполним команду:

Из вывода команды, мы видим, что используется оболочка bash.

Способ 2

Также можно воспользоваться командой echo $0 . Данная команда выведет на экран имя текущего работающего процесса, внутри которого она выполнена. Так как мы выполняем команду внутри оболочки, то будет выведено имя оболочки.

Способ 3

Определим, работающий процесс оболочки командой ps.

Определить текущую оболочку Shell в Linux

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

Список оболочек, которые в данный момент установлены и доступны в системе Linux, хранится в файле /etc/shells

Выведем содержимое файла /etc/shells , для этого выполняем команду:

Список командных оболочек Linux

Как временно переключиться на другую оболочку

Чтобы временно переключиться на другую оболочку, достаточно выполнить в терминале команду, соответствующую ее имени. После этого вы переключитесь на новую оболочку.

Например, переключимся на оболочку sh. Выполняем команду:

Переключиться на другую оболочку в Linux

Как изменить оболочку

Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).

Чтобы изменить оболочку текущего пользователя нужно выполнить команду:

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

Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):

После этого нужно выйти и снова войти в систему.

Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:

Заключение

Мы рассмотрели, как определить текущую оболочку Linux, как просмотреть список доступных оболочек, а также как изменить оболочку, используемую по умолчанию.

Чтобы получить информацию о какой-либо оболочке (доступной в системе) можно воспользоваться Man-страницами. Например:

Дополнительные оболочки можно устанавливать средствами системы (из репозиториев). Например, для установки оболочки fish в Ubuntu Linux, выполните команду

Favorite

Добавить в избранное

Главное меню » Linux » Что такое оболочка входа в Linux?

Что такое оболочка входа в Linux?

На первый взгляд это может показаться простым, но если копнуть глубже, это может немного запутать. Чтобы понять это, давайте посмотрим еще раз на процесс входа в систему в системах Linux.

Первый процесс в системе Linux, будь то init или systemd, запускает программу getty. Getty, сокращение от get tty (tty обозначает физические или виртуальные терминалы), отвечает за защиту системы от несанкционированного доступа.

Что такое оболочка входа в Linux?

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

Ваши записи сверяются с информацией, хранящейся в файле /etc/passwd. Записи в файле /etc/passwd содержат некоторую информацию, такую как имя пользователя, идентификатор пользователя, домашний каталог и первую программу, которая должна быть запущена после успешного входа в систему.

Если в столбце первой программы/журнала в оболочке нет записи, по умолчанию используется /bin/sh, то есть стандартная оболочка.

Оболочка входа и оболочка без входа

Хорошо, вы вошли в систему и знаете, что это оболочка входа. Но что это значит? Есть ли и другие снаряды? Где они?

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

С технической точки зрения это подоболочка, но об этом позже. Давайте пока сосредоточимся на оболочке входа в систему.

Профиль и файлы RC для оболочки

Оболочка входа в систему считывает переменную среды и другую конфигурацию из /etc/profile и файла профиля в домашнем каталоге. Это позволяет вам иметь завершение табуляции, цветной вывод и устанавливать другие вещи, такие как umask и т. д.

Вы, наверное, знаете, что для систем Linux доступно более одной оболочки . В большинстве дистрибутивов Linux по умолчанию используется оболочка bash, но вы можете установить другую оболочку, например zsh или Fish.

Файлы в каталоге /etc задают соответствующую конфигурацию оболочки для всех пользователей системы. Обычно это настраивает системный администратор.

Очевидно, что файлы в домашнем каталоге пользователя зависят от пользователя. Это позволяет пользователям создавать псевдонимы для часто используемых команд или использовать пользовательскую переменную PATH для программы.

Оболочки без входа в систему происходят из оболочки входа в систему и, следовательно, получают всю среду, установленную оболочкой входа в систему, через файлы профиля. В дополнение к этому, интерактивная оболочка, не входящая в систему, может определять свои собственные переменные среды через файлы rc (конфигурации ресурсов) в /etc или домашнем каталоге.

Для оболочки bash это обычно файлы /etc/bash.bashrc и

/.bash_rc, а для оболочки zsh это /etc/zshrc и

  • Файлы профиля предназначены для интерактивных оболочек входа. Файлы rc предназначены для интерактивных оболочек без входа в систему.
  • Сначала выполняются файлы в каталоге /etc, а затем файлы в домашнем каталоге.
  • Интерактивные оболочки без входа в систему выигрывают от файлов профиля и rc.
Читать Использование команды Bash printf для печати форматированных выходных данных

Как узнать, что вы находитесь в оболочке входа в систему?

На самом деле это очень просто, по крайней мере, для оболочки bash. Для оболочки входа имя исполняемого файла оболочки начинается с -. Для оболочки без входа в систему это просто имя оболочки.

Вы ведь умеете проверять оболочку? Вы проверяете значение аргумента 0.

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

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

Если вы опытный пользователь, читающий это, и обнаружите, что что-то технически некорректно или отсутствует какой-то важный момент, сообщите мне об этом в комментариях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оболочка пользователя ( shell ) в Linux.

Операционные системы семейства Linux, как впрочем, и любые другие ОС, предполагают наличие интерфейса взаимодействия между компонентами компьютерной системы и конечным пользователем, т. е. наличие программного уровня, который обеспечивает ввод команд и параметров для получения желаемых результатов. Такой программный уровень получил название "оболочка" или, на английском языке - shell .

Что такое оболочка ?

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

- Интерпретация командной строки.

- Доступ к командам и результатам их выполнения.

- Поддержка переменных , специальных символов и зарезервированных слов.

- Обработка файлов, операций стандартного ввода и вывода.

- Реализация специального языка программирования оболочки.

Для операционных систем семейства Unix / Linux возможно использование нескольких различных оболочек, отличающихся свойствами и методами взаимодействия с системой. Наиболее распространенными оболочками являются

sh - оболочка Bourne , классическая оболочка для ОС Unix

bash оболочка Bourne Again (GNU Bourne-Again SHell). Пожалуй, наиболее распространенная на данный момент, оболочка в среде ОС семейства Linux.

ksh - оболочка Korn , разработанная в качестве развития оболочки Bourne с историей командной строки и возможностью редактирования команд.

csh - оболочка C , использующая синтаксис популярного языка программирования C

tcsh - версия оболочки C с интерактивным редактированием командной строки.

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

В процессе загрузки операционных систем семейства Linux, после загрузки ядра системы выполняется переход в интерактивный режим – режим взаимодействия пользователя и операционной системы. В ОС Linux, первым запускаемым в ходе загрузки процессом, является программа инициализации init , которая считывает содержимое конфигурационного файла /etc/inittab , определяет перечень и характеристики терминалов, имеющихся в системе, и вызывает программу интерактивного входа getty , отображающую приглашение для ввода имени пользователя. После ввода имени пользователя и пароля, программа getty вызывает программу login , которая проверяет достоверность учетной записи, выполняет переход в домашний каталог пользователя и передает управление программе начального запуска сеанса, в качестве которой обычно используется программа оболочки пользователя, конкретная разновидность которой определяется содержимым файла /etc/passwd для данной учетной записи. Например:

user1:x:508:511::/home/user1:/bin/sh
interbase:x:510:511::/home/interbase:/bin/csh
apb:x:511:513:apb:/home/apb:/bin/bash

При выходе из оболочки, ядро системы возвращает управление программе init , которая перезапускает процесс входа в систему и на терминале отображается приглашение к вводу имени пользователя. Выход из оболочки может быть выполнен одним из двух способов :

- посредством команды exit выполненной пользователем

- при получении процессом оболочки сигнала kill , отправленного ядром, например при перезагрузке системы.

Интерпретация командной строки.

Пользовательский ввод в ответ на приглашение оболочки обычно называют командной строкой или командой . Команда Linux - это строка символов из имени команды и аргументов, разделенных пробелами. Аргументы предоставляют команде дополнительные параметры, определяющие ее поведение. Наиболее часто в качестве аргументов используются опции и имена файлов и каталогов. Например, командная строка

ls -l file01 file02

содержит команду ls , опцию -l и два имени файлов file01 file02 .

При использовании нескольких опций, их можно объединять. Например, варианты следующих команд идентичны :

Команды, являющиеся частью оболочки, называются встроенными. К таким командам относятся, например, cd, if, case и т. п. Естественно, встроенные команды могут отличаться для различных вариантов оболочек. Кроме встроенных команд, возможно использование программных модулей, представляющих собой отдельные исполняемые файлы, или файлов скриптов или сценариев - обычных текстовых файлов, содержащих последовательно выполняемые строки с командами оболочки. Некоторые скрипты (сценарии) могут выполняться процессами Linux, как например, планировщиком задач cron . Планировщик задач, как правило, предназначен для автоматического выполнения задач администрирования системы по расписанию. Задачи cron представляют собой команды или скрипты и выполняются автоматически, без какого либо вмешательства человека и могут выполняться в контексте разных учетных записей пользователей. В случае, когда задача планировщика предполагает выполнение какого-либо скрипта, возникает проблема выбора оболочки, которая должна быть запущена в качестве дочернего процесса cron для обработки команд из файла скрипта - ведь оболочка может быть любой, а синтаксис скрипта, как правило, предполагает использование конкретной оболочки, под которую он написан. Для устранения данной проблемы, в ОС семейства Linux принято в первой строке скрипта указывать разновидность оболочки, необходимой для его выполнения, в виде:

При выполнении команд или сценариев используются переменные окружения (на английском языке - environment , значения которых характеризуют программную среду, в которой происходит выполнение команд. Такие переменные могут содержать общие настройки системы, параметры графической или командной оболочки, пути исполняемых файлов и т.п. Значения переменных окружения устанавливаются на уровне системы (для всех пользователей) и на уровне конкретного пользователя. Для установки переменных окружения на уровне системы используется содержимое файлов:

/etc/profile - устанавливает переменные только для командных оболочек. Может запускать любые скрипты в оболочках, совместимых с Bourne shell.

/etc/bash.bashrc - устанавливает переменные только для интерактивных оболочек. Он также запускает bash-скрипты.

/etc/environment - используется модулем PAM-env. В этом файле можно указывать только пары имя=значение .

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

/bin в переменную PATH для всех пользователей, поместите следующий код в один из системных файлов инициализации окружения (/etc/profile или /etc/bash.bashrc):

/bin в переменную $PATH.

if [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin)

Как правило, в операционных системах Linux, идентификатор пользователя менее 1000 или менее 500 используется для служебных учетных записей. В данном примере, переменная окружения будет установлена для всех локальных пользователей системы с идентификатором 1000 или более.

Если же нужно изменить среду окружения для конкретного пользователя, используется модификация содержимого среды окружения пользователя:

/.bash_login и т.п. - файлы инициализации командной оболочки из домашнего каталога пользователя.

/.profile - файл инициализации профиля пользователя. Используется многими оболочками для определения переменных среды.

/.pam_environment - пользовательский аналог файла /etc/environment, который используется модулем PAM-env.

Например, чтобы добавить каталог пользователя

/bin в пути поиска исполняемых файлов, заданных переменной PATH , можно например, в файл

/.profile поместить строку:

Чтобы установить переменные окружения для графических приложений, используется содержимое файлов настройки графической среды пользователей

Гораздо чаще значения переменных окружения задаются для текущего сеанса пользователя. Например, для добавления пользовательского каталога

/bin в пути поиска исполняемых файлов:

Новое значение переменной PATH будет действовать только до завершения текущего сеанса пользователя.

Для просмотра значения переменной можно использовать команду echo $переменная , например:

В настоящее время, самой распространенной оболочкой, как уже упоминалось выше, является bash . Вызвано это, в первую очередь тем, что оболочка bash является sh - совместимой командной оболочкой, в которую добавлены полезные возможности из оболочек Korn shell ( ksh ) и C shell ( csh ). Оболочка bash может без какой-либо модификации выполнять большинство скриптов, написанных под язык программирования оболочки sh и в максимальной степени пытается приблизиться к стандарту POSIX , что привело к появлению множества улучшений, причем как для программирования, так и использования в интерактивном режиме. В современной реализации bash имеется режим редактирования командной строки, неограниченный размер истории команд, средства управление заданиями, возможность использования псевдонимов, обширный перечень встроенных команд, функции командной оболочки и т.п. В целом, bash в наибольшей степени соответствует потребностям среднестатистического пользователя, что и сделало ее наиболее используемой в среде Linux.

При запуске bash без параметров командной строки, оболочка запускается в интерактивном режиме, отображая на экране приглашение к вводу команд. Интерактивная оболочка обычно читает данные из терминала пользователя и пишет данные в этот же терминал, стандартным устройством ввода является клавиатура, а стандартным устройством вывода – дисплей. Пользователь вводит команды на клавиатуре, а результат их выполнения отображается на дисплее.

Читайте также: