4

Я запускаю следующую команду и ожидаю, что она вернет мне BAR , так как новая оболочка, которую я создаю, сначала запустит .mybashrc, где она устанавливает $FOO прежде чем будет выполняться echo $FOO .

bash --rcfile .mybashrc -c 'echo $FOO'

.mybashrc:

export FOO="BAR"

Однако результат пуст. Что пошло не так?

1 ответ1

7

По умолчанию неинтерактивные выполнения bash не загружают файлы инициализации, такие как .bashrc или цель вашего параметра --rcfile . Как описано в man странице:

An interactive shell is one started without non-option arguments and without
the -c option whose standard input and error are both connected to terminals
... or one started with the -i option.

Таким образом, вы можете получить желаемое поведение, заставив bash работать как интерактивная оболочка с -i:

bash --rcfile .mybashrc -ci 'echo $FOO'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .