Включение и отключение параметров оболочки
На этом этапе мы научимся включать и выключать параметры оболочки с помощью команды set. Параметры оболочки можно включить с помощью set -o option_name или set -option_short_form, а выключить — с помощью set +o option_name или set +option_short_form.
Давайте создадим новый скрипт, который демонстрирует, как переключать параметры оболочки:
cd ~/project/shell-settings
nano set_toggle.sh
Добавьте в файл следующее содержимое:
#!/bin/zsh
## Этот скрипт демонстрирует, как переключать параметры оболочки
## Отображение исходного статуса
echo "Original shell options status:"
set -o | grep "noglob\|nounset"
## Включение параметров
echo -e "\nEnabling options..."
set -o noglob ## Отключение расширения имен файлов (глоббинга)
set -o nounset ## Рассматривать неустановленные переменные как ошибку
## Альтернативная сокращенная форма: set -f -u
## Отображение статуса после включения
echo -e "\nStatus after enabling options:"
set -o | grep "noglob\|nounset"
## Тестирование включенных параметров
echo -e "\nTesting noglob (pattern matching disabled):"
echo * ## При включенном noglob * не будет расширяться до имен файлов
echo -e "\nTesting nounset (unset variables error):"
## Раскомментирование следующей строки вызовет ошибку при включенном nounset
## echo $undefined_variable
## Выключение параметров
echo -e "\nDisabling options..."
set +o noglob ## Включение расширения имен файлов (глоббинга)
set +o nounset ## Не рассматривать неустановленные переменные как ошибку
## Альтернативная сокращенная форма: set +f +u
## Отображение статуса после выключения
echo -e "\nStatus after disabling options:"
set -o | grep "noglob\|nounset"
## Тестирование после выключения
echo -e "\nTesting after disabling noglob (pattern matching enabled):"
echo * ## Теперь * будет расширяться для отображения имен файлов
Сохраните файл и сделайте его исполняемым:
chmod +x set_toggle.sh
Запустите скрипт, чтобы увидеть, как можно переключать параметры оболочки:
./set_toggle.sh
Вы должны увидеть вывод, показывающий, как параметры меняются с выключенного на включенное состояние и обратно, а также демонстрации того, как эти параметры влияют на поведение команд.
Параметр noglob отключает сопоставление шаблонов имен файлов (глоббинг), что означает, что символы, такие как *, обрабатываются буквально, а не как подстановочные знаки.
Параметр nounset заставляет оболочку рассматривать неустановленные переменные как ошибку, что полезно для обнаружения опечаток в именах переменных в скриптах.
Это всего лишь два примера параметров оболочки. Вы можете поэкспериментировать с другими параметрами из списка, который вы видели на первом этапе.