Command-line shell (Русский)

Состояние перевода: На этой странице представлен перевод статьи Command-line shell. Дата последней синхронизации: 27 ноября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:

Кома́ндная оболо́чка Unix (англ. Unix shell, часто просто «шелл» или «sh») — командный интерпретатор, используемый в операционных системах семейства Unix, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. В первую очередь, под shell понимаются POSIX-совместимые оболочки, восходящие к Bourne shell (шелл Борна), появившемуся в Unix Version 7.

Список оболочек

Оболочки, более или менее совместимые с POSIX, перечислены в разделе #POSIX-совместимые, а оболочки с другим синтаксисом — в разделе #Альтернативные оболочки.

POSIX-совместимые

На эти оболочки может вести символическая ссылка /usr/bin/sh. Когда Bash, mkshAUR и zsh запускаются через исполняемый файл с именем sh, они автоматически становятся более совместимыми с POSIX.

  • Bash Bash расширяет оболочку Bourne shell, добавляя историю и автодополнение, индексированные и ассоциативные массивы, целочисленную арифметику, подстановку процессов, here strings, регулярные выражения и расширение скобок.
https://www.gnu.org/software/bash/ || bash
  • Dash Потомок NetBSD-версии Almquist SHell (ash). Быстрая POSIX-совместимая оболочка, которая стремится быть настолько маленькой, насколько это возможно.
http://gondor.apana.org.au/~herbert/dash/ || dash
  • Korn shell Командная оболочка UNIX. Имеет полную обратную совместимость с Bourne shell и включает в себя возможности C shell. Язык KornShell представляет собой полный, мощный язык программирования высокого уровня, для написания приложений. Зачастую легче и быстрее, чем на других языках высокого уровня. Это делает его особенно подходящим для прототипирования. Ksh имеет лучшие черты оболочки Bourne и C, плюс множество самостоятельных возможностей. Таким образом Ksh может сделать многое, чтобы повысить производительность и качество вашей работы в взаимодействии с системой и в программировании. Ksh программы легче писать, они более кратки и читабельны, чем программы написанные на языке нижнего уровня, такого как C.
http://www.kornshell.com || Смотрите Ksh#Installation

        Альтернативные оболочки

        • C shell (tcsh) Командный интерпретатор, используемый как интерактивная оболочка входа в систему и командный процессор скриптов. Он имеет редактор командной строки, программируемое автодополнение слов, проверку орфографии, механизм истории, управление заданиями и C-подобный синтаксис.
        https://www.tcsh.org || tcsh
        • Elvish Современная и выразительная оболочка, которая может переносить внутренние структурированные значения через конвейеры. Эта возможность позволяет избежать большого количества сложного кода для обработки текста. Это выразительный язык программирования с такими возможностями, как исключения, пространства имён и анонимные функции. Также есть мощный readline, который проверяет синтаксис при наборе текста, и подсветка синтаксиса по умолчанию.
        https://elv.sh || elvish

                        Выбор оболочки по умолчанию

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

                        Посмотрите все установленные оболочки:

                        $ chsh -l

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

                        $ chsh -s полный-путь-до-оболочки

                        Если вы используете systemd-homed, выполните:

                        $ homectl update --shell=полный-путь-до-оболочки пользователь

                        Где полный-путь-до-оболочки — это путь, который вывела команда .

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

                        Совет: chsh берёт информацию об оболочках из файла /etc/shells. Если свежеустановленная оболочка не появилась в списке, вы можете добавить её вручную в этот файл.

                        Удаление оболочки

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

                        Измените оболочку по умолчанию на другую перед её удалением.

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

                        Сделайте это для каждого пользователя, у которого удаляемая оболочка используется в качестве оболочки входа (не забудьте проверить пользователя root). После завершения пакет можно удалить.

                        Оболочка входа

                        Оболочка входа (login shell) — это режим запуска оболочки, в котором она читает файлы, предназначенные для однократной инициализации, такие как общесистемный или пользовательский или другие специфические для оболочки файлы. Эти файлы задают начальное окружение, которое наследуется всеми другими процессами, запущенными из оболочки (в том числе другими оболочками, не связанными со входом в систему, или графическими приложениями). Следовательно, они читаются только один раз в начале сеанса, то есть, например, когда пользователь входит в консоль или через SSH, меняет пользователя с помощью sudo или su с параметром , или когда пользователь вручную запускает оболочку входа (например, командой ).

                        Обзор различных файлов инициализации смотрите в разделе #Файлы настроек и по ссылкам в нём. Для получения дополнительной информации об оболочке входа смотрите также Difference between Login Shell and Non-Login Shell? и Why a "login" shell over a "non-login" shell? на Stackexchange.

                        Файлы настроек

                        Чтобы сделать автозапуск программ в консоли или при входе в систему, можно использовать файлы/каталоги, которые оболочка выполняет при запуске. Смотрите документацию к вашей оболочке или соответствующую статью в ArchWiki: например, Bash (Русский)#Файлы настроек или Zsh (Русский)#Файлы Запуска/Завершения.

                        /etc/profile

                        При входе в систему все Bourne-совместимые оболочки выполняют source файла , который, в свою очередь, выполняет source всех читабельных файлов в каталоге : в этих скриптах не требуется указывать директиву интерпретатора (шебанг) и их не нужно делать исполняемыми. Они используются для настройки окружения и определения параметров, специфичных для приложений.

                        Стандартизация

                        Можно заставить файлы настроек (некоторых) оболочек следовать одному и тому же соглашению об именовании, а также поддерживать некоторые общие настройки между оболочками.

                        Смотрите статью об этом и соответствующий репозиторий. Смотрите также xsh.

                        Ввод и вывод

                        Смотрите также GregsWiki и I/O Redirection.

                        • При перенаправлении вывода в файл важно иметь в виду, что файл обнуляется (truncate) перед выполнением команды. Если вы попытаетесь сделать что-то подобное: то это не сработает, а содержимое файла будет потеряно. Хотя в некоторых командах (например sed) есть опция для редактирования файлов на месте, многие команды такой опции не имеют. В таком случае можно использовать команду из пакета moreutils.
                        • Так как cat не является встроенной в оболочку командой, может быть лучше использовать вместо неё перенаправление, например, в скриптах, или если вам важна производительность. Фактически, < файл делает то же самое, что и .
                        • POSIX-совместимые оболочки поддерживают Here Documents:
                        • Конвейеры (трубы, pipelines) по умолчанию работают со стандартным выводом (stdout). Чтобы работать со стандартным выводом ошибок (), можно перенаправить stderr в stdout с помощью конструкции вида , или, в Bash 4, .
                        • Помните, что многие основные утилиты GNU принимают файлы в качестве аргументов, так что, например, вместо можно написать .

                        Смотрите также

                        gollark: And Lemmmy left as well as Yemmel, see?
                        gollark: Lemmmy's website is *also* down - yet more evidence that they are yemmel.
                        gollark: YES----------------IT IS🦀
                        gollark: https://pastebin.com/wYBZjQhNÞoŧaŧopłex (potatoplex) now has a custom mode for command computers! Don't worry, there's no manual configuration, just run it on a command computer and it'll automatically enter command mode and install itself as startup!
                        gollark: it is DOWN
                        This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.