Скрипты на bash
Если пользователю нужно выполнить много шаблонных действий по очереди и этот алгоритм будет использоваться не один раз, можно создать скрипты. Команды записываются в файл и выполняются каждый раз, когда он исполняется. С помощью скриптов можно автоматизировать работу с системой и упростить процессы.
Чтобы запустить скрипт из консоли, нужно ввести команду bash <имя скрипта> или sh <имя скрипта>.
Начало скрипта. Чтобы система поняла, что файл — скрипт, его первая строка должна быть такой:
#!/bin/bash
После ! пишется путь к интерпретатору bash, который по умолчанию выглядит так, как указано в коде. Если в системе другой путь, соответственно меняется и запись в начале скрипта. Узнать этот путь можно с помощью команды в терминале:
whereis bash
Расширение для файла скрипта традиционно указывается как .sh. На самом деле система сможет выполнить файл и с другим расширением и даже без него. В первую очередь .sh указывается для удобства пользователя, чтобы ему было легче понять, что файл — bash-скрипт.
Переменные. Скриптовый язык поддерживает переменные. У них нет типа, а объявляются они так:
<имя_переменной> = <значение>
Значение может быть числовым, текстовым или другим. Можно получить его извне с помощью специальных обозначений:
- $0 — передает имя скрипта;
- $1, $2 и так далее — аргументы, которые пользователь может передать в скрипт, когда открывает его.
Обратиться к созданной переменной внутри скрипта можно так: $<имя_переменной>. Она используется для вычислений, ввода-вывода и других действий.
Условия и циклы. Скрипт может выполнять действия, если соблюдается какое-либо условие. Для этого используется конструкция:
If <условие>then <действие, если условие выполнено>else <действие, если условие не выполнено>fi
Циклы позволяют выполнять команды заданное количество раз или пока некоторое условие верно. Таким образом можно управлять родительскими и дочерними процессами, контролировать версии или работать с сервером.
Профессия
Системный администратор
Станьте универсальным junior-специалистом по Linux с нуля или отточите уже имеющиеся навыки.
- разработаете собственный кластер;
- сможете начать поиск работы уже во время обучения;
- обменяетесь опытом с 250+ сокурсниками;
- получите поддержку персонального ментора.
Узнать больше
Команды для навигации по системе
Постоянно прописывать путь целиком сложно и долго. Поэтому в bash есть система обозначений специально для навигации:
- . — текущая папка;
- .. — папка на уровень выше текущей;
- ~ — домашний каталог. Его адрес по умолчанию зависит от дистрибутива операционной системы. Например, в Ubuntu это /home/<имя_пользователя>;
- — — предыдущий каталог.
Эти обозначения разрешается использовать вместо части пути или пути полностью. Например, можно написать ~/myfiles или ../docs/work.
Перемещаться по системе и ориентироваться в местоположении помогают команды:
- pwd — показать полный путь к папке, где сейчас находится пользователь;
- сd <путь> — перейти в другой каталог.
Переменная окружения $ SHELL
Переменная окружения содержит имя вашей текущей оболочки. Мы можем проверить, какой из них установлен с :
echo $SHELL
Давайте начнем ракушка:
fish
Теперь давайте еще раз проверим, что переменная окружения говорит:
echo $SHELL
Первый раз мы используем мы в ракушка. Переменная окружения содержит путь к исполняемый файл, ,
Когда мы запускаем Оболочка, мы получаем приветственное приветственное сообщение и командная строка меняется. Что может быть удивительным, так это среда по-прежнему держит путь к исполняемый файл, , Это нормально — это нормально.
Когда вы запускаете новую оболочку (или любую другую программу), она наследует среду родительской оболочки. Так что оболочка наследует глобальные и экспортированные переменные среды из ракушка. Потому что значение в переменная окружения не была изменена, она имеет то же значение в оболочка, что он сделал в ракушка.
Были запущены как и любая другая программа. Мы также можем использовать выйти из ракушка. Он закрывается, как и любая другая программа, и мы возвращаемся к ракушка.
Это здорово для того, чтобы опробовать новые оболочки, посмотреть, что они могут сделать, и ладят ли вы с ними. Вы можете исследовать, прежде чем совершить прыжок, и принять его в качестве оболочки для перехода.
Если вы решили сделать — или в любой другой оболочке — по умолчанию, вам нужно использовать команда.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
system
- *
-
Если значение command равно NULL, то возвращается ненулевое значение,
если оболочка присутствует в системе, или 0, если оболочка недоступна. - *
-
Если процесс-потомок не может быть создан или его состояние невозможно
вернуть, то возвращается значение -1. - *
-
Если оболочка не может выполниться в процессе-потомке, то возвращается
значение будет таким же как если бы оболочка-потомок завершилась вызовом
_exit(2) с состоянием 127. - *
-
Если все системные вызовы выполнены без ошибок, то возвращается значение
состояния завершения процесса-потомка, использовавшегося для выполнения
command (состояние завершения оболочки — это состояние завершения
последней выполнявшейся команды).
В последних двух случаях возвращаемое значение — это «состояние ожидания»,
которое можно определить с помощью макроса описанного в waitpid(2)
(т. е., WIFEXITED(), WEXITSTATUS() и т. п.).
Какой Linux Shell лучше для меня?
Тот факт, что эти опции доступны, просто великолепен. Каждый из них дает представление о вычислительной истории, где программисты решили, что они хотят сделать все по-своему.
Существенные различия между этими оболочками можно найти в синтаксисе сценариев. Каждая оболочка имеет определенный набор нюансов которые отделяют их друг от друга. В настоящее время Bash доминирует с точки зрения доли рынка, что значительно упрощает поиск помощи. Bash просто лучший универсал, удовлетворяющий потребности всех, кроме самых продвинутых пользователей.
Когда вы остановитесь на оболочке Linux, убедитесь, что вы знакомы с основами сценариев оболочки.
Внутренние и внешние команды оболочки
Вводимые пользователем команды делятся на два типа:
Внутренние — это команды, изначально встроенные в оболочку.
Внешние — это команды, которые не встроены в оболочку. По своей сути они являются скорее небольшими отдельными программами, расположенными где-то в файловой системе (обычно, в каталогах /bin или /usr/bin).
Чтобы определить тип команды, достаточно в окне терминала ввести :
Как вы можете видеть, команды , , и — являются внутренними командами оболочки bash. А вот команды , и — являются внешними, т.к. они ссылаются на соответствующие файлы в каталоге /usr/bin.
Ознакомиться с полным списком внутренних команд оболочки можно при помощи команды :
Запуск программ
Различают:
- бинарные исполняемые файлы (в формате ELF и пр.);
- текстовые программы (скрипты) на интерпретируемых языках.
И те, и те файлы в UNIX-системах имеют выставленные биты права на выполнение. Право на выполнение (x) означает, что вы можете загрузить файл в память и попытаться запустить его на выполнение как исполняемую программу. Загрузчик по первым байтам понимает, как запускать этот исполняемый файл.
Шебанг (shebang)
Последовательность из двух символов: решётки и восклицательного знака (#!) в начале файла скрипта.
Когда скрипт с шебангом выполняется как программа в UNIX-подобных операционных системах, загрузчик программ рассматривает остаток строки после шебанга как имя файла программы-интерпретатора. Загрузчик запускает эту программу и передаёт ей в качестве параметра имя файла скрипта с шебангом.
#!interpreter
interpreter должен быть абсолютным путём.
Пример: в файле some/path/to/foo записано
#!/bin/sh -x
и он запускается как
some/path/to/foo bar baz
Это то же самое, что запустить
/bin/sh -x some/path/to/foo bar baz
Вопрос: что будет, если запустить
#!/bin/cat Hello world!
Ответ: напечатаются обе строки.
Переменная окружения PATH
Переменная окружения PATH представляет собой набор каталогов, в которых расположены исполняемые файлы. В основном, каждый выполняемый процесс или сеанс пользователя имеет собственную переменную PATH.
На POSIX и Unix-подобных операционных системах переменная PATH задана как одно или несколько имён каталогов, разделённых двоеточиями (:).
echo $PATH
Согласно стандарту POSIX, использовать каталоги с двоеточием в имени не получится.
В основном в переменную PATH входят каталоги /bin, /usr/bin и /usr/local/bin.
Текущий каталог (.) обычно в PATH не входит из соображений безопасности, чтобы избежать случайного исполнения скриптов из текущего каталога. Запуск такой программы требует написания (./) перед названием.
После создания запроса запуска пользователем или программой, система будет проверять каждый каталог переменной $PATH слева направо в поисках файла, соответствующего заданной команде. Первая найденная программа выполняется в качестве дочернего процесса командной оболочки или программы, сделавшей запрос.
/usr/bin/env
Для переносимости, чтобы не указывать полный путь к интерпретатору, в шебанг прописывают программу /usr/bin/env. Например,
/usr/bin/env python
запустит первый python, который будет найден в PATH.
Пусть есть следующий скрипт на Python:
#!/usr/bin/env python import sys print sys.executable
Запустим его:
sobols@sobols-VirtualBox:~/unix/path$ ./main.py /usr/bin/python sobols@sobols-VirtualBox:~/unix/path$ virtualenv venv Running virtualenv with interpreter /usr/bin/python2 New python executable in /home/sobols/unix/path/venv/bin/python2 Also creating executable in /home/sobols/unix/path/venv/bin/python Installing setuptools, pkg_resources, pip, wheel...done. sobols@sobols-VirtualBox:~/unix/path$ source ./venv/bin/activate (venv) sobols@sobols-VirtualBox:~/unix/path$ ./main.py /home/sobols/unix/path/venv/bin/python
Не используйте /bin/bash
#!/bin/bash в качестве shebang использовать не стоит, т. к. место расположения bash не специфицируется FHS (в принципе, он может лежать в /usr/bin/bash, например – так обстоят дела по крайней мере в некоторых версиях FreeBSD).
Вместо
#!/bin/bash
следует использовать
#!/usr/bin/env bash
Если вы ничего bash-специфичного не используете, рекомендуется использовать
#!/bin/sh
(на некоторых системах sh ссылается на bash, но на других это могут быть более простые и быстрые оболочки, а bash в принципе может быть не установлен).
Создание сценариев командной оболочки (шелл-скриптов)
Сценарий представляет собой обычный текстовый файл, редактируемый в текстовом редакторе. Можно выбрать по вкусу
- nano / mcedit (mc F4) / evim
- gedit
- Sublime Text
- …
Расширение файла значения не имеет. Часто используется .sh.
Как устроена навигация в bash
Организация файлов и папок в Linux не такая, как в Windows. Путь к файлу отсчитывается не от названия диска, а от так называемого корневого каталога. Говоря языком «для начинающих», это начальная точка: считается, что все файлы и папки в системе расположены внутри «корня». Внутри этих папок могут лежать свои подкаталоги и файлы, но их расположение тоже отсчитывается относительно корневого каталога. Корневой каталог обозначается прямым слэшем /.
Чтобы указать на файл, лежащий в корневом каталоге, нужно написать /<имя_файла>. Полный путь к любому файлу можно прописать так: /<папка1>/<папка2>/…/<папкаn>/<файл>.
Указывать весь путь необязательно. Можно прописать расположение файлов и папок относительно того места, где вы находитесь.
В системах Windows для указания пути используются обратные слэши \. В Linux это всегда прямые слэши /.
Что такое Bash
Bash (Bourne again shell или «возрождённый» shell) – это модифицированная версия программной оболочки Bourne-shell (sh или «Оболочка Борна»). Она является командным процессором, работающим интерактивно в текстовом окне. Bash нужен для приема команд пользователя и их отправки операционной системе для последующей обработки.
Bash – это универсальный инструмент для выполнения различных задач, который в некоторых случаях позволяет избежать установки специализированного программного обеспечения. Одновременно, это скриптовый язык программирования, позволяющий создавать сценарии для автоматизации различных операций.
История создания
Предшественница Bash – Bourne-shell (sh, «Оболочка Борна») была одной из первых оболочек для операционных систем Unix. Ее создал в 1978 году британский ученый Стивен Борн, давший Bourne-shell свое имя.
Изначально оболочка sh обладала относительно небольшим набором функций. Но в 1987 году Bourne-shell заинтересовался программист Брайан Фокс, сумевший доработать и значительно расширить ее функционал. В 1989 году Брайан создал бета-версию Bash и продолжал поддерживать свое детище вплоть до 1993 года.
Брайан Фокс — создатель оболочки Bash.
Основные команды, правила их написания и прочие особенности Bash были перенесены из sh. Прочие возможности, включая историю, позаимствованы из Korn Shell и C Shell (других вариаций Bourne-shell). Bash практически полностью соответствует стандартам POSIX.
Сегодня оболочка Bash предустановлена в большей части дистрибутивов Unix/Linux. Взаимодействие оболочки и операционной системы обеспечивается с помощью специальной программы – терминала (например, lxterm, xterm, eterm, gnome-terminal).
Темы
Существует множество тем, но некоторые считают, что powerlevel10k одна из лучших. Она добавляет выровненное по правому краю информационное окно, интеграцию с git и историей команд, невероятную настройку и оборачивает всё это в приятный интерфейс на основе плагина powerline для vim.
Вы захотите использовать iTerm на macOS или на любом терминале с 24-битным цветом, чтобы получить максимальную отдачу от powerlevel10k (или любой другой темы ZSH).
Чтобы настроить powerlevel10k (если вы установили Oh-My-Zsh), просто клонируйте репозиторий в папку пользовательских тем .oh-my-zsh:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
Затем вам нужно включить его в .zshrc:
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>! ~/.zshrc
После загрузите .zshrc и вы должны увидеть внесённые изменения.
source ~/.zshrc
При желании вы можете настроить приглашение по умолчанию, указав POWERLEVEL9K_LEFT_PROMPT_ELEMENTS в вашем .zshrc. Вот мой с минимальным приглашением командной строки:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs dir rbenv) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(root_indicator background_jobs status load)
Вы можете найти полную документацию для powerlevel10k в репо.
Что такое shell?
Shell (или «шелл», «командная оболочка») — это не только командный интерпретатор, который обеспечивает интерфейс взаимодействия между пользователем и ядром операционной системы, но и своеобразный язык программирования, в котором присутствуют такие конструкции, как операторы условного ветвления, циклы, переменные и многое другое.
Операционная система (ОС) запускает командную оболочку для каждого пользователя, когда тот входит в систему или открывает окно терминала. Первым что пользователь увидит в окне терминала, будет приглашение оболочки — оно, как правило, состоит из имени пользователя и имени хоста, отделенные друг от друга символом , следом за ними идет путь текущей рабочей директории и один из двух символов: или .
Если пользователь не наделен особыми правами, то в качестве приглашения к вводу команд в терминале будет отображаться символ . Если же был выполнен вход под учетной записью привилегированного (root) пользователя, то в терминале вы увидите символ :
Окно терминала обычного пользователя (виден символ $)
Окно терминала привилегированного (root) пользователя (виден символ #)
Примечание: Знак тильды () указывает на то, что мы находимся в домашнем каталоге текущего пользователя.
После приглашения, пользователь вводит различные команды в терминал, оболочка запускает программы для пользователя, а затем отображает в терминале результат их выполнения. Команды могут быть либо введены непосредственно самим пользователем, либо считаны из файла, называемого shell-скриптом или shell-программой.
Ниже представлен пример выполнения простой команды , возвращающей текущую дату и время:
Как работают скрипты
В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.
Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.
/etc/profile
Этот файл используется оболочкой Bourne (sh), а также оболочками, совместимыми с Bourne, такими как Bash, Ash и Ksh. Он содержит записи по умолчанию для переменных среды для всех пользователей, которые входят в систему в интерактивном режиме. Например, это влияет на $PATH и дизайн приглашения для обычных пользователей, а также пользователя с именем «root». В приведенном ниже примере показана часть /etc/profile из Debian GNU/Linux.
setuserpath(){ # Общие каталоги для исполняемых файлов для всех пользователей PATH="/usr/local/bin:/usr/bin:/bin" # Тест для корневого пользователя для добавления в программы системного администрирования if ; then PATH="/usr/local/sbin:/usr/sbin:/sbin:$PATH" else PATH="/usr/local/games:/usr/games:$PATH" fi export PATH } setuserpath() # PS1-это основная строка командной строки if ; then if && [ "$BASH" != "/bin/sh" ]; then # Файл bash.bashrc уже устанавливает PS1 по умолчанию. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if ; then PS1='# ' else PS1='$ ' fi fi fi
Другие файлы конфигурации можно сохранить в каталоге /etc/profile.d. Они загружаются в конфигурацию Bash, как только читается /etc/profile.
Зачем использовать bash
Те же самые действия с файлами, папками и поиском можно выполнить с помощью графического интерфейса ОС. Но это дольше, неудобнее и сложнее. Программисты пользуются bash или shell, чтобы упростить и ускорить работу с системой.
Например, чтобы скопировать файл с помощью графического интерфейса, нужно открыть папку, где он расположен, кликнуть на файл правой кнопкой мыши, вызвать контекстное меню и выбрать «Скопировать». А если использовать командную строку и bash — потребуется ввести одну команду.
cp <файл1> <файл2>
Команда cp означает «скопировать». <файл1> — это путь к исходному файлу, например /home/file.txt. Это значит, что file.txt лежит в папке /home.
<файл2> — путь к копии файла, которая создастся при выполнении команды. Например, /home/usr/file2.txt, где file2.txt — название копии. Она будет находиться в папке /usr внутри директории /home.
В некоторых системах графический интерфейс практически не используется. Все действия нужно выполнять с помощью командной строки. Здесь bash/shell незаменим.
KornShell
Обычно известный как ksh, KornShell — это популярная альтернативная оболочка Linux, созданная Bell Labs в 1980-х годах. Существует не так много различий между bash и ksh, но у каждого есть незначительные преимущества перед другим. Ksh, например, имеет команду cd old new. Если вы были в каталоге / Downloads / foo / bar / one / foobar и вам нужно было перейти в / Downloads / foo / bar / two / foobar, вам просто нужно ввести:
CD один два
Ветераны ksh будут пропагандировать его превосходство, упоминая его преимущества сценариев. Это включает:
- Лучший синтаксис цикла
- Естественные способы повторения команд
- Ассоциативные массивы
В отличие от bash, сложно найти помощь для ksh в Интернете. Если вы хотите попробовать ksh, введите:
sudo apt установить ksh ksh
Почему Shell важна
Оболочка сидит между вами и операционной системой. Он обеспечивает среду внутри окна терминала, которая позволяет вводить команды и запускать программы. Оболочка проверяет ваш ввод и выясняет, что вы хотите. Если он может выполнять ваши ставки самостоятельно, он делает это. Если ему нужна помощь извне, он ищет путь и находит программы, которые могут делать все, что вам нужно.
В Linux доступно много различных оболочек. Все они позволяют выполнять одни и те же основные задачи: исследовать файловую систему, работать с файлами, запускать программы и запускать сценарии. Однако каждый из них выполняет эти задачи по-своему, и у них есть свои особенности и особенности.
Оболочки, как правило, разрабатываются людьми, которые хотят, чтобы вещи вели себя определенным образом. Если ваше мышление совпадает с мышлением этого дизайнера, эта оболочка вполне подойдет вам. Плюс, пробовать новую оболочку в Linux легко.
В большинстве дистрибутивов Linux, включая Ubuntu, оболочка по умолчанию , Это делает большую работу и очень способный. Тем не менее, другая оболочка может сэкономить время, что окажет большое влияние на ваш рабочий процесс. Вы никогда не узнаете, не посмотрите ли вы!
СВЯЗАННЫЕ С: Что такое ZSH, и почему вы должны использовать его вместо Bash?
Z Shell
Многие считают, что это оставляет лучшую оболочку для последнего, что было бы совершенно понятно. Zsh имеет сходство с bash и ksh и включает в себя многие функции, найденные в них, а также tcsh. Особенности Zsh:
- Навигационный список автозаполнения
- Улучшенная орфографическая коррекция
- Завершение командной строки
- История делится между терминалами
- Globbing (подстановочные знаки для имен файлов)
Globbing в Zsh очень полезен. Typing:
VIM / U / L / B / A
Открыл бы файл:
/usr/local/bin/autoupdate.sh
Zsh может занять некоторое время для настройки при первом использовании, если вы не используете конфигурацию по умолчанию. Чтобы попробовать, введите:
sudo apt установить zsh zsh
Типы командных оболочек
В *nix-системах существует два основных типа оболочек: оболочки на основе Bourne shell и оболочки на основе C shell.
Типичными представителями оболочек типа Bourne shell являются:
sh (Bourne shell)
bash (Bourne Again shell)
ksh (Korn shell)
zsh (Z Shell)
К оболочкам типа C Shell относятся:
csh (C shell)
tcsh (TENEX/TOPS C shell)
Ниже представлены некоторые из самых распространенных шеллов, используемых в *nix-системах:
Примечание: Термин «*nix-системы» обозначает -подобные операционные системы.
sh (Bourne shell)
sh (сокр. от Bourne shell») — это самая старая (среди рассматриваемых) оболочка, написанная Стивеном Борном из AT&T Bell Labs для ОС UNIX v7. Оболочка доступна практически в любом *nix-дистрибутиве. Многие другие шеллы уходят своими корнями именно к sh. Благодаря своей скорости работы и компактности, данная оболочка является предпочтительным средством для написания shell-скриптов. К её недостаткам можно отнести отсутствие функций для использования оболочки в интерактивном режиме, а также отсутствие встроенной обработки арифметических и логических выражений.
Примечание: Стоит отметить, что из-за общего морального устаревания оболочки, в современных системах ссылка на шелл sh (/bin/sh), обычно, является псевдонимом для запуска текущей, более новой оболочки.
Характерные черты sh:
Полные пути к интерпретатору: /bin/sh и /sbin/sh.
Приглашение для обычного пользователя: .
Приглашение для суперпользователя (root): .
bash (Bourne-Again shell)
bash (сокр. от Bourne–Again shell») — это усовершенствованный и дополненный вариант шелла sh, является одной из самых популярных современных командных оболочек *nix-систем.
Совместим с sh.
Объединяет в себе полезные фишки оболочек ksh и csh.
Поддерживает навигацию при помощи стрелок, благодаря чему можно просматривать историю команд и выполнять редактирование прямо в командной строке.
Характерные черты bash:
Полный путь к интерпретатору: /bin/bash.
Приглашение для обычного пользователя: (где — это домашний каталог текущего пользователя, например, ).
Приглашение для суперпользователя (root): .
ksh (Korn shell)
ksh (сокр. от Korn shell) — это командная оболочка, разработанная Дэвидом Корном из AT&T Bell Labs в 1980-x годах.
Является расширением sh.
Имеет обратную совместимость с sh.
Имеет интерактивный функционал, сравнимый с csh.
Включает в себя удобные для программирования функции, такие как: встроенную поддержку арифметических выражений/функций, Си-подобный синтаксис скриптов и средства для работы со строками.
Работает быстрее, чем csh.
Может запускать скрипты, написанные для sh.
Характерные черты ksh:
Полный путь к интерпретатору: /bin/ksh.
Приглашение для обычного пользователя: .
Приглашение для суперпользователя (root): .
csh (C shell)
csh (сокр. от C shell) — это командная оболочка, созданная Биллом Джоем (автором редактора vi) с целью усовершенствования стандартного шелла Unix (sh).
Имеет встроенные функции для интерактивного использования, например, псевдонимы (aliases) и историю команд.
Включает в себя удобные для программирования функции, такие как: встроенную поддержку арифметических выражений и Cи-подобный синтаксис скриптов.
Характерные черты csh:
Полный путь к интерпретатору: /bin/csh.
Приглашение для обычного пользователя: .
Приглашение для суперпользователя (root): .
tcsh (TENEX C Shell)
tcsh (сокр. от TENEX C shell) — это командная оболочка, созданная Кэном Гриром, которая позиционируется как улучшенная версия шелла csh.
Имеет полную совместимость csh.
Именно в данном шелле впервые появилась функция автодополнения команд и путей.
Удобна для интерактивной работы.
Поддерживает редактор командной строки в стиле vi или emacs.
Является стандартным шеллом во FreeBSD.
Характерные черты tcsh:
Полный путь к интерпретатору: /bin/tcsh.
Приглашение для обычного пользователя: .
Приглашение для суперпользователя (root): .
zsh (Z Shell)
zsh (сокр. от Z shell) — это командная оболочка, созданная Паулем Фалстадом во время его учебы в Принстонском университете, позиционируется как свободная современная sh-совместимая командная оболочка.
Среди стандартных шеллов больше всего похожа на ksh, но включает в себя множество улучшений.
Встроенная поддержка программируемого автодополнения команд, имен файлов и пр.
Поддержка проверки орфографии и опечаток.
Раздельная история команд для одновременной работы с несколькими запущенными шеллами.
Характерные черты zsh:
Полный путь к интерпретатору: /bin/zsh.
Приглашение для обычного пользователя: .
Приглашение для суперпользователя (root): .
Список установленных оболочек
Чтобы увидеть, какие оболочки установлены на вашем компьютере, используйте эту команду. Он просто перечисляет содержимое файл:
cat /etc/shells
Мы упоминали , , а также , но что ?
это Томпсон оболочка, написанная еще в 1971 году Кен Томпсон из Bell Labs известность. Он больше не поддерживается и давно заменен современными оболочками. Он включен исключительно для обеспечения совместимости со старыми сценариями, в которых в первой строке по-прежнему указывается следующее:
#!/bin/sh
Это инструктирует систему использовать оболочка для выполнения скрипта. У вас действительно есть эта древняя оболочка на вашем компьютере, и она используется для запуска ваших скриптов? Команда скажет нам, какая программа действительно запускается при вводе команды.
Давайте посмотрим, что работает, когда вы печатаете :
which sh
Это кажется, чтобы найти двоичный файл. если мы копнем немного глубже, мы увидим, что это символическая ссылка, которая на самом деле указывает на облегченная оболочка, используемая для выполнения скриптов:
ls -l /bin/sh
Это аккуратный и легкий способ обеспечения безопасности для сценариев, которые ожидают найти на современных системах.
Как узнать, какие оболочки установлены в системе
Чтобы изменить оболочку по умолчанию для пользователя, нужно знать, какие оболочки доступны и как они правильно называются.
Один из способов узнать правильные названия оболочек и пути до исполнимых файлов — это запустить следующую команду:
chsh -l
Но предыдущая команда срабатывает не на всех дистрибутивах (работает на Arch Linux, но не работает на производных Debian).
Поэтому можно воспользоваться универсальным методом — посмотреть содержимое файла /etc/shells:
cat /etc/shells
В файле shells собраны пути к действующим оболочкам входа.
/etc/shells — это текстовый файл, который содержит полные пути к действующим оболочкам входа. Этот файл просматривается программой chsh и доступен для запроса другими программами.
Имейте в виду, что есть программы, которые обращаются к этому файлу, чтобы узнать, является ли пользователь обычным пользователем; например, демоны FTP традиционно запрещают доступ пользователям с оболочками, не включёнными в этот файл.
Рыба
Среди всей серьезности Linux, команда из fish привнесла чувство юмора в свой проект. На их веб-сайте заголовок «насмешка» гласит «Наконец, оболочка командной строки для 90-х», хотя fish («дружественная интерактивная оболочка») была разработана в 2005 году. Помимо рекламируемого «Славного цвета VGA», есть некоторые улучшения по сравнению с другие снаряды:
Эта функция добавляет синтаксис со страницы руководства недавно установленного программного обеспечения к вашим предложениям по автозаполнению. Если вы хотите поближе познакомиться с командной строкой, то отличным местом для начала может стать fish.
Чтобы узнать, о чем рыба, введите:
судо установить рыбу