Установить переменную 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