Доступ к переменным среды в сценарии bash - PullRequest
0 голосов
/ 04 августа 2020

У меня есть сценарий bash, в котором я пытаюсь использовать значения некоторых переменных среды. Эти переменные определены - я вижу ключи и значения, если запускаю printenv.

Кроме того, эти переменные определены и экспортируются как export FOO="bar" как в ~ / .bash_profile, так и в ~ / .bashr c .

Я пытаюсь выполнить сценарий через ./script-name, который не может получить переменные среды. Если я запустил sudo -E ./script-name, это каким-то образом получит скрипт нужные ему переменные.

Не понимаю, почему эти переменные недоступны для скрипта, даже если они экспортируются в файлы, указанные выше.

1 Ответ

1 голос
/ 04 августа 2020

Единственное, о чем я могу думать, это то, что по какой-то причине процесс оболочки, который вы вызываете для запуска скрипта, не имеет полного доступа для чтения к вашей текущей среде.

ls -al /usr/bin/bash
ls -al /bin/sh

Предполагая ни одна из них не является символической ссылкой, убедитесь, что ваш текущий пользователь прочитал и выполнил привилегии. Более безопасным (с точки зрения безопасности) вариантом будет установка bash в ~ / opt и использование #! ~ / Opt / bin / bash в качестве строки shebang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...