Недавно я боролся с очень похожей проблемой.Хотя у меня нет идеального решения для вас, у меня есть несколько предложений.
Во-первых, действительно важно, где именно было определено MY_ENV_VAR
.Если он находится внутри .bashrc
файла, вам нужно запустить bash в интерактивном режиме с -i
, чтобы он читал этот файл.Если он определен в .bash_profile
, вам нужно будет использовать -l
для запуска так называемой оболочки входа в систему.
В моем конкретном случае я должен использовать оба -i
и -l
чтобы увидеть env vars, который я ищу.Все становится еще сложнее, если пользователь не использует bash.Например, я использую fish, поэтому мои необходимые переменные ENV вообще не видны для bash, независимо от вызова bash
.
Итак, на самом деле я first defineкакая оболочка используется, а затем вызовите эту оболочку с помощью -i -l -c
.zsh, bash и fish поддерживают эти параметры.
Это настоящая боль, и я даже не уверен, что этот метод надежен.Но он работает для меня в различных пользовательских средах.