Любые сюрпризы при настройке SHELL env var?

Я использую macOS, и поскольку он поставляется с Bash 3.2, я обновил до 4.4 через homebrew. Я настроил терминал для использования новой версии, установив команду запуска:

/usr/local/bin/bash -l 

Недавно я играл с командой script для записи и воспроизведения сеансов терминала и обнаружил, что он использует Bash 3.2

Установка export SHELL=/usr/local/bin/bash исправляет это, но мне интересно, стоит ли его устанавливать. Я предполагаю, что было бы нецелесообразно не устанавливать его, но я просто не уверен, что еще принимает решения на основе SHELL env var.

One Solution collect form web for “Любые сюрпризы при настройке SHELL env var?”

Традиционным значением переменной окружения SHELL является любимая интерактивная оболочка пользователя. Нет никаких обязательств, что он имеет какой-либо конкретный синтаксис (он не должен быть похожим на Bourne), что он поддерживает любой конкретный синтаксис командной строки (например, -c ) или что он имеет какое-либо отношение к оболочке входа ( приложения, которые используют SHELL обычно по умолчанию используют оболочку входа, если SHELL не поддерживается). В основном он используется терминальными эмуляторами, поскольку программа запускается по умолчанию.

Если вы входите в текстовый режим (на текстовой консоли или через SSH), то вы получаете оболочку входа, указанную в пользовательской базе данных (например, /etc/passwd ). Когда вы открываете терминал в среде GUI, вы получаете оболочку, указанную переменной окружения SHELL если задана переменная. Если вы хотите использовать ту же оболочку для входа в текстовый режим, либо измените свою оболочку входа с помощью chsh , либо сделайте свой переключатель оболочки входа в свою любимую оболочку с помощью exec .

Иногда вы можете столкнуться с программой, которая использует $SHELL -c вместо sh -c для выполнения кода в синтаксисе sh. Но это довольно редко. Это технически разрешено POSIX, но это будет нарушать историческое использование. На практике установка SHELL безопасна. У меня установлена ​​моя оболочка для входа в /bin/sh а SHELL установлена ​​на /path/to/zsh на большинстве машин в течение примерно двух десятилетий.

  • Манипулировать имя файла с помощью команды find
  • dirname и basename против расширения параметров
  • `wait` не ждет` wget -background`
  • Фоновая и передняя задача и выполнение задач параллельно
  • Использование \ $ в конце имени переменной передается grep
  • Самый быстрый и эффективный способ получить количество записей (строк) в gzip-сжатом файле
  • Что означает «FILENAME = $ (echo $ INFILE | grep -oE» + $ ")" означает?
  • Команда типа не может различать исполняемую команду и сценарий оболочки
  • Могу ли я настроить параметры отображения оболочки?
  • Перемещение файлов из нескольких каталогов в другую систему
  • У нас больше истории для cd?
  • Linux и Unix - лучшая ОС в мире.