Поиск по сайту:
Нельзя научиться программированию с помощью ручного калькулятора, но можно забыть арифметику. (Алан.Дж.Перлис)

Интерфейс оболочки Linux для ядра Linux

14.12.2022
Интерфейс оболочки Linux для ядра Linux

Мы пройдем через оболочку Linux, интерпретатор команд для Linux. Shell предоставляет среду, в которой несколько исполняемых программ C присутствуют по определенному известному пути. Shell находит эти исполняемые файлы и предоставляет вывод этих команд на консоль. Мы обсудим несколько примеров команд и переменных среды оболочки.

 

Описание:

Shell предоставляет пользователю среду, в которой пользователь может выполнять несколько исполняемых программ, а вывод этих программ отображается на дисплее. По сути, рабочая философия оболочки заключается в том, что она постоянно ожидает, пока пользователь введет строку. Затем эта строка ищется и сопоставляется с известными исполняемыми программами, присутствующими в среде оболочки. Если совпадающая исполняемая программа найдена, исполняемый файл запускается после создания дочернего процесса. Этот вновь созданный дочерний процесс выполняет программу. Вывод программы передается родительскому процессу, который является оболочкой. Shell выводит вывод на консоль, если вывод не перенаправляется. Места, где оболочка ищет исполняемые программы, указаны в переменной среды «PATH».

Блок-схема оболочки показана ниже:

Интерфейс оболочки Linux для ядра Linux

 

Из предоставленной блок-схемы мы можем сделать вывод, что нам нужна оболочка для запуска любого исполняемого файла C в среде Linux. Без оболочки невозможно динамическое выполнение программы C. Есть несколько предопределенных исполняемых программ, которые известны как команды оболочки. Некоторыми примерами команд оболочки являются ls, ps и т. д.

Давайте обсудим команды оболочки. Существует два типа команд оболочки:

а) Встроенные команды

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

Некоторые примеры встроенных команд: cd, echo, kill, break, alias, bg и т. д. Мы можем использовать команду «help», чтобы увидеть весь список встроенных команд.

б) Внешние команды

Эти команды представляют собой отдельные исполняемые файлы программы C. Они не являются частью оболочки. Это места на определенном пути. Shell просматривает эти пути, выполняет программы и отображает результат. Добавить новую команду в список известных команд легко; просто скопируйте новую исполняемую программу/команду по известному пути. Как правило, эти команды помещаются в такие пути, как /usr/bin, /usr/sbin и т. д. Все местоположения указаны в PATH.

Читать  Как сделать резервную копию системы Ubuntu с помощью grsync

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

Ubuntu@andreyex:$ echo $PATH
/home/cienauser/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

 

Если мы хотим ввести новый путь в этот список, мы можем обновить значения переменных среды PATH. Команду «export» можно использовать для обновления PATH новыми значениями.

Используя команду «type», мы можем получить, что любая команда является встроенной или внешней. Давайте разберемся с использованием «type». Выполнение типа с «cd» дает следующий вывод:

Ubuntu@andreyex:~/type cd
cd is a shell builtin
Ubuntu@andreyex:~/$

 

Вывод предыдущей команды говорит сам за себя.

Теперь давайте попробуем команду «type» с командой lspci:

Ubuntu@andreyex:~/type lspci
lspci is /usr/bin/lspci
Ubuntu@andreyex:~/$

 

Поскольку вывод показывает путь к исполняемому файлу, мы можем сделать вывод, что это внешняя команда.

Переменные среды

Для оболочки определено несколько переменных среды. До сих пор мы понимали переменную PATH. PATH — это переменная среды, которая предоставляет список путей для поиска внешних команд. Полный список переменных среды можно проверить с помощью команды env. Команда env предоставляет полный список переменных среды.

Вот несколько примеров переменных среды оболочки:

  • PATH: список путей для внешних команд.
  • SHELL: тип активной оболочки.
  • OLDPWD: последний рабочий каталог.
  • PWD: Относится к текущему рабочему каталогу.
  • USER: имя пользователя для активной оболочки.
  • HOME: домашний каталог пользователя.
Читать  Исправление ошибки «System has not been booted with systemd as init system»

Есть много других. Как обсуждалось ранее, полный список можно проверить с помощью команды env.

 

Изменение переменных среды

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

Echo $PATH

Использование оператора $ перед переменной внутри оболочки выводит значение переменной. Это предложение команды echo. Точно так же эхо можно использовать для вывода любой переменной среды.

Если мы хотим обновить переменную PATH, мы хотим обновить пользовательский путь, такой как /usr/cutom, который мы хотим добавить в PATH. Мы размещаем наши команды cutom по этому пути. Чтобы оболочка выполняла эти команды, ее значение необходимо обновить в PATH. Без обновления PATH, если мы запускаем эти пользовательские программы, мы получаем сообщение об ошибке «no such file or directory». Эта ошибка ясно говорит о том, что оболочка не может найти команды.

В качестве эксперимента мы поместим нашу пользовательскую команду myls и myps в папку /home/andreyex/custom. Когда мы запускаем myls или myps из /home/andreyex, мы получаем следующее сообщение от оболочки:

andreyex@Terminator:~$ myls
Command 'myls' not found, did you mean:
command 'tyls' from deb terminology
command 'mmls' from deb sleuthkit
Try: sudo apt install <deb name>
andreyex@Terminator:~$ myps
Command 'myps' not found, did you mean:
command 'mypy' from deb mypy
Try: sudo apt install <deb name>
andreyex@Terminator:~$

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

Читать  Как запускать приложения Linux на Chromebook

Теперь давайте добавим новый настраиваемый путь к существующему PATH следующим образом:

andreyex@Terminator:~$ echo $PATH

/home/cienauser/.local/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

andreyex@Terminator:~$ export PATH=$PATH:/home/andreyex/custom

andreyex@Terminator:~$ echo $PATH

/home/cienauser/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/andreyex/custom

andreyex@Terminator:~$

 

Наш недавно добавленный путь выделен жирным шрифтом. Мы видим, что переменная среды PATH обновляется новым значением.

Теперь давайте попробуем еще раз выполнить команды, которые присутствуют в нашем пользовательском пути. Выполняя «myps» и «myls», мы получаем следующий вывод:

andreyex@Terminator:~$ myps
PID TTY TIME CMD
2112 pts/0 00:00:00 bash
2783 pts/0 00:00:00 myps
andreyex@Terminator:~$ myls
a.out pack-installed spd_tool build_root_fs kernel_articles patches stime
coreboot kernel_ubuntu pcie_transfer_app stime.c
bash_arm custom lmsensors Redfishtool telnet_scripts nvm_cli
openssh snap
andreyex@Terminator:~$

 

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

Вывод

Мы обсудили определение оболочки. Мы также увидели философию, лежащую в основе реализации различных типов команд, предоставляемых оболочкой, и переменных среды оболочки. Мы также рассмотрели несколько переменных среды. Самое главное, мы обсудили переменную PATH. Мы также увидели способ обновления PATH и важность переменной, что продемонстрировано на примере. Мы узнали о важности Shell и ее предложений.

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
ASRock готова раскрыть всю мощь чипсетов RDNA 3 со своими…

Спасибо!

Теперь редакторы в курсе.