2

У меня есть небольшой скрипт, который устанавливает всю мою прокси-систему за один раз, он вызывает gconftool-2, устанавливает прокси в ~/.ssh/config и устанавливает прокси для apt. Это все относительно просто. Настоящая проблема заключается в обновлении моих запущенных сессий bash.

Можно выполнить команду из приглашения ($ PS1, $ PROMPT_COMMAND, даже связывание ввода с командой), но все они выполняются как отдельные команды и, следовательно, не влияют на мою текущую среду. Вместо того, чтобы выполнять эти команды, я хотел бы получить их.

Даже это не работает:

export PS1="\$(source /etc/profile.d/proxy.sh)$ "

Я понимаю, почему это не работает (я думаю), но как я могу обойти это?

спасибо Марк

1 ответ1

2

Причина, по которой вы показываете, не работает, как вы, возможно, подозревали, состоит в том, что $() создает подоболочку. Изменения в подоболочке не сохраняются для родителя и, как вы говорите, не влияют на текущую среду. Однако PROMPT_COMMAND может делать то, что вы хотите, не создавая подоболочки:

export PROMPT_COMMAND='source /etc/profile.d/proxy.sh'

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