Пытаясь "правильно" реализовать стандартную конфигурацию моей предпочтительной оболочки bash
для использования на нескольких платформах, я натолкнулся на некоторую путаницу при работе с терминалами, которые несовместимы с их выбором типов запуска оболочки (логин или интерактивный).
Загрузочные файлы Bash
Из руководства по bash я определил разницу между файлами запуска и порядком / случаями, в которых они получены (/etc/profile
, ~/.bash_profile
, ~/.bash_login
и ~/.profile
для оболочек входа в систему). и ~/.bashrc
для интерактивных оболочек без входа в систему). В документации предлагается, чтобы вы сохраняли конфигурацию входа в систему, специфичную для bash, в ~/.bash_profile
а интерактивные настройки, специфичные для bash, в ~/.bashrc
. Само руководство даже предложило добавить if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
в ~/.bash_profile
файла так Войти оболочки наследуют вашу интерактивные настройки оболочки.
Из того, что я прочитал в руководстве и на различных онлайн-форумах / документах, также представляется целесообразным абстрагировать вашу конфигурацию входа, не относящуюся к bash, к ~/.profile
так как другие оболочки могут получить этот файл. Это может быть крайний случай для людей, которые могут использовать оболочку Bourne в дополнение к bash (что в моем случае маловероятно), но это кажется хорошей привычкой формироваться.
Пока что все это кажется довольно простым и логичным, особенно в среде, где очевидно различие между различными типами запуска оболочки: в системах или терминалах, где командная строка является основным интерфейсом, оболочки входа в систему являются вашими основными оболочками сеанса. интерактивные оболочки - это последующие оболочки, запущенные в этом сеансе, а ваши неинтерактивные оболочки - это оболочки, запускаемые сценариями.
Настоящая путаница заключается в том, что представляет собой оболочка входа в систему, когда ваша оболочка запускается из терминала в среде графического интерфейса, где вы уже прошли проверку подлинности в системе? Мне кажется, что в Mac OSX Terminal.app по умолчанию используется оболочка, запускаемая в каждом окне, для запуска оболочки входа в систему, тогда как в xterm каждое новое окно представляет собой интерактивную оболочку.
Возможно, что я вижу проблему, когда ее не существует, однако учтите следующее: ситуация с терминалом предполагает, что я поместил подавляющее большинство своей конфигурации в ~/.bashrc
чтобы избежать потери функциональности, если я буду работать на терминале, который запускает bash как интерактивную оболочку Будучи незнакомым с тонкостями, когда bash может порождаться в виде интерактивных оболочек, я должен полагаться на это утверждение, что неправильное использование ~/.bashrc
как это, в конечном итоге приведет к проблемам, когда неправильная установка конфигурации оболочки входа наносит ущерб нормальной работе оболочки. Нетрудно представить, что проблемы могут возникнуть, если вы игнорируете рекомендации руководства и используете файлы конфигурации не по назначению.
Поскольку вы не можете полагаться на использование ~/.bashrc
качестве всеобъемлющего , кажется, что вам, возможно, придется обрабатывать файлы ~/.bash_profile
и ~/.bashrc
разному в зависимости от используемого терминала. Похоже, что это приведет к множеству головных болей и противоречит цели иметь эти отличные файлы запуска в первую очередь!
Итак, наконец, мои вопросы таковы:
- Как нынешние пользователи оболочки Bash решают проблему несоответствий терминала GUI между начальным входом в систему и интерактивными оболочками?
- Как создать единый набор файлов запуска bash для кросс-платформенного (и кросс-терминального) использования, не сталкиваясь с проблемами?
Спасибо за вашу помощь и советы.