![Получение переменных из ~/.bash.rc и сохранение их при выходе из системы](https://rvso.com/image/1288691/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B8%D0%B7%20~%2F.bash.rc%20%D0%B8%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%D1%85%20%D0%BF%D1%80%D0%B8%20%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%D0%B5%20%D0%B8%D0%B7%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B.png)
Я написал кучу скриптов bash, чтобы сделать возможными неинтерактивные, безопасные, основанные на cron SVN-извлечения с помощью клиента CollabNet SVN и GNOME Keyring Daemon (он же GKD), и один из скриптов был разработан для запуска GKD, сбора его вывода, по сути, пары переменных окружения, и экспорта этих переменных в оболочку пользователя, от имени которого запущен скрипт. Все это происходит при входе пользователя в систему путем размещения скрипта bash в ~/.bashrc.
Проблема в том, что эти переменные среды не будут экспортированы, поскольку скрипт выполняется в подоболочке, которая завершается после завершения, а переменные среды сбрасываются навсегда.
Вопрос в том, как можно сделать эти переменные постоянными, то есть экспортировать их и сохранить неизменными даже во время сеансов входа-выхода?
решение1
Просто выведите переменную в другой скрипт оболочки в вашем домашнем каталоге (или в другом месте), начиная с . (чтобы она была невидима в представлении ls по умолчанию). Измените ваш .bashrc так, чтобы при запуске он выполнял этот скрипт оболочки.
Пример:
foo='What the heck'; echo "foo='$foo'" > ~/.startup.sh
Затем поместите это в ~/.bashrc и все готово:
. ~/.startup.sh