Установить переменную env из BASH-скрипта

Мне нужно сделать что-то вроде

$ source /etc/environments # called in bash.sh script

Конечно, после завершения скрипта никакие изменения не применяются к оболочке. Я знаю, что это сложно, потому что дочерний процесс не может изменить родительский процесс 'bash'. Но может быть другой способ сделать это?

2 ответа

Вы должны использовать

source bash.sh

Затем он запускается в исходной оболочке вместо дочернего процесса.

Как вы сами заметили, дочерний процесс не может устанавливать постоянные переменные среды. Одна из обычных работ - писать что-то вроде этого в stdout:

% cat my_script
#!/bin/bash
echo "export MY_VAR=1234"

И затем используется в подстановке команды:

eval "$(./my_script)"

Примером такого скрипта является dircolors

Другие вопросы по тегам