ракушка это интерпретатор командной строки, который переводит команды, введенные пользователем, в действия, которые должны выполняться операционной системой. Оболочка может быть запущена интерактивным способом (где пользователь может вводить и выполнять команды) или неинтерактивным способом (разветвленным сценарием или программой, такой как кронтаб, и т.д.).
Интерактивные оболочки запускаются в эмуляторе терминала, который относится к приложениям с графическим интерфейсом как гном-терминал, xtermи т. д., или в пределах TTY, который относится к виртуальной текстовой консоли. TTY доступны с помощью комбинации клавиш Ctrl Альт F1-9. В настольных дистрибутивах Linux среда рабочего стола работает в одном из этих TTY.
Использованная литература:
Независимо от того, эмулятор терминала это или TTY, вы можете делать то же самое с работающей внутри оболочкой.
Оболочка пользователя по умолчанию в Ubuntu: Баш. Существует файл инициализации с именем .bashrc который находится в домашнем каталоге пользователя. Этот файл (наряду с некоторыми другими файлами инициализации системы, такими как /etc/bash.bashrc) является источник когда пользователь открывает новую интерактивную оболочку. Таким образом создается среда пользователя по умолчанию.
Буквально по источникам .bashrc некоторые переменные среды получают определенные значения. Такие переменные окружения:
$ПУТЬ который содержит разделенные столбцами системные пути, по которым можно найти исполняемые файлы,
$PS1 который определяет как выглядит ваша подсказка, например: пользователь@хост:/текущий/каталог$,
$ЯЗЫК который устанавливает локаль по умолчанию, или $LC_ALL который переопределяет все настройки локали (источник этого объяснения, подробнее см. местонахождение человека).
Поэтому, если вы хотите навсегда изменить какую-либо переменную среды (в пользовательской оболочке Bash), вы можете изменить (или установить) ее значение в пределах .bashrc. В противном случае изменение будет действительным только для текущего экземпляра оболочки.
Например, откройте новый терминал и введите PS1='prompt_changed->' и ваше приглашение будет изменено на эту строку. Затем оставьте это окно терминала открытым и откройте новый терминал — вы увидите, что это изменение не применяется там. Чтобы восстановить первый терминал, вы можете вручную получить .bashrc файл по команде . ~/.bashrc.
Когда вы используете экспорт командой, вы экспортируете переменную в подоболочки которые разветвляются из текущей оболочки (дочерние оболочки), а не в другие (родственные) оболочки, созданные родительскими процессами текущей оболочки.Вот пример:
user@host:~$ VAR='Привет!' # Определите переменную с именем VAR
user@host:~$ echo $VAR # Вывод значения переменной
Привет!
user@host:~$ export VAR # Экспорт переменной
user@host:~$ bash # Создать новую оболочку bash
user@host:~$ echo $VAR # Вывод значения экспортируемой переменной
Привет!
user@host:~$ exit # Выход в родительскую оболочку
user@host:~$ sh # Разветвить новую оболочку sh (тире)
$ echo $VAR # Вывести значение экспортируемой переменной
Привет!
Команда окружение используется для изменения среды выполнения команды или скрипта. Вот несколько строк из человек окружение:
окружение - установить среду для вызова команды. окружение утилита должна получить текущую среду, изменить
его в соответствии с его аргументами, затем вызовите утилиту, названную
служебный операнд с измененной средой.
-я Вызвать утилиту именно с той средой, которая указана в аргументах; унаследованная среда должна полностью игнорироваться.
Следующая команда: env -i PATH=/mybin mygrep xyz мой файл вызывает команду мойгреп с новым ДОРОЖКА value как единственная запись в его окружении. В таком случае, ДОРОЖКА используется для обнаружения мойгреп, который затем должен находиться в /mybin.
окружение часто используется в начале скриптов (внутри так называемого шебанга) для повышения их переносимости. Вот две темы, которые охватывают это использование:
При запуске без аргументов окружение Команда выводит список переменных среды.
Еще раз, .bashrc файл в домашнем каталоге настраивает функции оболочки, такие как создание или изменение переменных и псевдонимов, а также определение функций.
Например, давайте определим следующую функцию в нижней части .bashrc файл.
hello() { echo "Привет, ${USER^}!"; }
После сохранения файла вы можете получить его или открыть новый экземпляр терминала и ввести Привет.
spas@host:~$ привет
Привет, Спас!
Итак, мы видим, что эта функция (или переменная, или псевдоним) доступна в текущей оболочке. На этом этапе называется местный функция (или переменная, или псевдоним), поэтому, если мы проверим среду с помощью окружение | привет привет нашей функции там не будет.
Локальные переменные существуют только в текущей оболочке и не могут влиять на другие команды или приложения.
После определения функции (переменной, псевдонима) в .bashrc мы можем экспортировать его, чтобы сделать его доступным для вспомогательных оболочек (команд или сценариев), разветвленных из текущей оболочки - таким образом, он становится Глобальный или же среда функция (переменная, псевдоним).
hello() { echo "Привет, ${USER^}!"; }
экспорт -f привет
spas@host:~$ source ~/.bashrc # в bash 'source' является синопсисом '.'
spas@host:~$ env | grep 'hello' # анализируем 'hello' в выводе 'env'
BASH_FUNC_hello%%=() { echo "Привет, ${USER^}!"
spas@host:~$ bash -c 'hello' # разветвить неинтерактивную подоболочку
Привет, Спас! # и выполняем функцию внутри
Имейте в виду, что неинтерактивные оболочки в большинстве случаев не используют по умолчанию файлы инициализации, как .bashrc, поэтому их среда ограничена, чем среда интерактивных оболочек.
Например, когда вы разрабатываете сценарий, который будет использоваться кронтаб вы должны использовать полные пути к командам или убедиться, что у него есть необходимая среда.