Запустите интерактивную оболочку входа в bash с измененным $ PATH - PullRequest
1 голос
/ 26 сентября 2019

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

В некоторых средах, особенно вMac, окна терминала создаются как оболочки входа в систему, потому что родительский процесс пользовательского интерфейса не оценивал обычные файлы инициализации, такие как /etc/profile или $HOME/.bash_profile.

. Из-за этого многие люди настроили свои псевдонимы, помощник-sourcings / evals (rbenv, rvm, ..) и т. д. таким образом, что они загружаются только для оболочек входа в систему.

По этой причине я хотел бы, чтобы на вкладке терминала открывалась оболочка входа вместо-Login один, но я не нашел способ изменить PATH после того, как все сценарии по умолчанию оценены.

Похоже, bash --login --init-file <(echo "echo hello") никогда не оценивает файл инициализации (предоставляется через анонимный канал).

Есть ли способ запустить оболочку входа в систему с PATH, который устанавливается после загрузки всех сценариев запуска?

У меня это работает для Fish и Zsh,которая будет новой оболочкой по умолчанию на MacOS Catalina, но не может понять, как заставить ее работать на bash.

1 Ответ

0 голосов
/ 26 сентября 2019

Да, --login / -l, кажется, отключает --init-file.

Как насчет выполнения интерактивной оболочки и передачи ей профиля и интерактивный скрипт:

bash --init-file <(echo 'for p in /etc/profile ~/.bash_profile .bashrc; do
                           if [[ -f "$p" ]] ; then source "$p"; fi
                         done')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...