Меню Рубрики

Set команда в linux

Фундаментальные основы Linux. Часть III. Раскрытие команд командной оболочкой

Глава 12. Переменные командной оболочки

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

Символ доллара ($)

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

Зависимость от регистра

Создание переменных

Кавычки

Команда set

Вы можете использовать команду set для вывода списка переменных окружения. В системах Ubuntu и Debian команда set также выведет список функций командной оболочки после списка переменных командной оболочки. Поэтому для ознакомления со всеми элементами списка переменных окружения при работе с данными системами рекомендуется использовать команду set | more .

Команда unset

Переменная окружения $PS1

Переменная окружения $PS1 устанавливает формат приветствия вашей командной оболочки. При вводе строки форматирования вы можете использовать обратный слэш для экранирования таких специальных символов, как символ \u , предназначенный для вывода имени пользователя, или \w , предназначенный для вывода имени рабочей директории. На странице руководства командной оболочки bash представлен полный список специальных символов.

Переменная окружения $PATH

Команда env

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

Кроме того, команда env может также использоваться для запуска «чистой» командной оболочки (командной оболочки без наследования какого-либо окружения). Команда env -i позволяет очистить окружение дочерней командной оболочки.

Команда export

Разграничения переменных

Несвязанные переменные

В командной оболочке bash команда set -u идентична команде set -o nounset и, по аналогии, команда set +u идентична команде set +o nounset .

Практическое задание: переменные командной оболочки

1. Используйте команду echo для вывода строки «Привет», после которой должно следовать ваше имя. (Используйте переменную командной оболочки bash!)

2. Создайте переменную answer , значение которой равно 42.

3. Скопируйте значение переменной $LANG в значение переменной $MyLANG.

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

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

6. Присутствует ли информация о вашей переменной в выводе команд env и set ?

7. Уничтожьте вашу переменную answer .

8. Создайте две переменные и экспортируйте одну из них.

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

10. Создайте переменную и присвойте ей значение ‘Dumb’, после чего аналогичным образом создайте другую переменную с значением ‘do’. Используйте команду echo и две созданные переменные для вывода слова ‘Dumbledore’.

11. Найдите список экранированных с помощью обратного слэша управляющих символов на странице руководства командной оболочки bash. Добавьте управляющий символ в значение переменной PS1 для вывода времени в приветствии командной оболочки.

Корректная процедура выполнения практического задания: переменные командной оболочки

1. Используйте команду echo для вывода строки «Привет», после которой должно следовать ваше имя. (Используйте переменную командной оболочки bash!)

2. Создайте переменную answer , значение которой равно 42.

3. Скопируйте значение переменной $LANG в значение переменной $MyLANG.

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

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

6. Присутствует ли информация о вашей переменной в выводе команд env и set ?

7. Уничтожьте вашу переменную answer .

8. Создайте две переменные и экспортируйте одну из них.

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

10. Создайте переменную и присвойте ей значение ‘Dumb’, после чего аналогичным образом создайте другую переменную с значением ‘do’. Используйте команду echo и две созданные переменные для вывода слова ‘Dumbledore’.

11. Найдите список экранированных с помощью обратного слэша управляющих символов на странице руководства командной оболочки bash. Добавьте управляющий символ в значение переменной PS1 для вывода времени в приветствии командной оболочки.

Источник

Set команда в linux

Запущенный без опций set показывает все shell-переменные и переменные среды (только в POSIX -режиме) в формате NAME=VALUE

Атрибуты

Атрибуты показанные ниже включаются так -X , а выключаются +X . (Такая перевернутая схема включения/выключения пришла в bash исторически, т.к. опции обычно включались в виде -X . Прямо как с электрическим зарядами)

Флаг Название опции Описание
-a allexport Автоматически отмечает измененные переменные.
Automatically mark new and altered variables to be exported to subsequent environments.
-b notify Не ждет нажатия enter чтобы оповестить о завершившемся в фоне job-е. (Оповещения работают только для управления job-ами)
-e errexit When set, the shell exits when a simple command in a command list exits non-zero ( FALSE ). This is not done in situations, where the exit code is already checked ( if , while , until , || , && )
-f noglob Отменяет развертывание путей и имен файлов (globbing)
-h hashall Запоминает абсолютное расположение команды если она вызывалась, и использует в следующий раз этот путь (хеширование). Включено по-умолчанию. (см checkhash из списка опций shopt)
-k keyword Разрешает подставлять значение перемернной среды окружения везде в командной строке, а не только во время вызова команды.
-m monitor Monitor mode. При управлении job-ами будет выведено короткое описание завершенного в фоне задания. По-умолчанию включено для для интерактивных оболочек с управлением job-ами.
-n noexec Читает и парсит команды из скрипта, но не исполняет их. Полезно для проверки сценария на предмет синтаксических ошибок. Игнорируется интерактивными оболочками.
-o Устаналивает или снимает опцию по её длинному имени. Например set -o noglob . Если никакой опции не задано, то выводится список всех опций и их статус.
-p privileged Включает привилегированный режим.
-t onecmd Выходит после чтения и выполнения одной команды.
-u nounset Рассматривает сброс (unset) переменной как ошибку при выполнении parameter expansion. Неинтерактивные оболочки завершают свое выполнение при такой ошибке.
-v verbose Выводит прочитанные или введенные строки при выполнении. Полезно при отладке.
-x xtrace Режим отладки. Перед выполнением команды печатает её со всеми уже развернутыми подстановками и вычислениями.
-B braceexpand Оболочка осуществляет раскрытие скобок. разворачивание (раскрытие) скобок. Эта опция включена по-умолчанию.
-C noclobber Не перезаписывает файлы в операциях перенаправлениях потока. Вы можете обойти это ограничение используя оператор перенаправления >| там где это необходимо. Смотрите перенаправления
-E errtrace ERR -ловушки будут наследоваться функциями оболочки, подстановками команд и командами которые выполняются в окружении подоболочки.
-H histexpand Разрешены подстановки из истории команд ( ! -style). По умолчанию включено для интерактивных оболочек.
-P physical Не следовать по симлинкам когда изменяются директории, use the physical filesystem structure.
-T functrace DEBUG — и RETURN -ловушки будут унаследованы последующими средами. Аналогично как -E для ERR -ловушек.
Означает «конец опций» — все следующие аргументы будут рассматриваться как позиционные параметры, даже если начинаются с минуса, как опции.
If no arguments follow, the positional parameters are unset. With arguments, the positional parameters are set, even if the strings begin with a — (dash) like an option.
Длинные опции, -o у которых нет короткого экивалента.
emacs Включает emacs -стиль для редактирования команд. По-умолчанию включена.
history Ведется история команд. Включена по-умолчанию для интерактивных оболочек.
ignoreeof Такой же эффект как и команды IGNOREEOF=10 . Смотрите shell variables.
nolog (В настоящее время игнорируется. currently ignored)
pipefail If set, the exit code from a pipeline is different to the normal («last command in pipeline») behaviour: TRUE when no command failed, FALSE when something failed (code of the rightmost command that failed)
posix Когда эта опция установлена — Bash работает в режиме POSIX .
vi Включает vi -стиль для редактирования команд. По-умолчанию включена.

Примеры

Часть скрипта, который показывает как включить-выключить вывод отладочной информации в скрипте ( -x ):

Соображения относительно портируемости

Команда set ее основы поведения оболочки при измененных опциях определены POSIX®. Однако, есть опции, специфичные для Bash. Естественно они не переносимы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Переустановка mac os с форматированием диска
  • Переустановка mac os с сохранением данных
  • Переустановка mac os на imac
  • Переустановка mac os без apple id
  • Переустановка mac os x и программ apple