#python-3.x #bash #environment-variables #sublimetext3 #manjaro
#python-3.x #bash #переменные среды #sublimetext3 #manjaro
Вопрос:
Я использую оболочку manjaro и bash. Я пытаюсь скрыть пароли и секретные ключи в переменных среды, чтобы я мог использовать их в своем скрипте python.
Я попробовал это в своем файле .bashrc
export BOT_EMAIL="mymail@automail.com"
export BOT_PASS="pass_"
И если я запускаю этот скрипт с терминала, он запускается
import os
a = os.environ.get("BOT_EMAIL")
b = os.environ.get("BOT_PASS")
print(a, b)
и выдает мне этот результат, как и ожидалось
mymail@automail.com pass_
Но проблема возникает, когда я пытаюсь запустить скрипт из sublime text 3, это дает мне это
None None
я думаю, что это проблема sublime, поэтому я перезапускал sublime около десяти раз и даже перезапускал свой компьютер, но он продолжает давать None
.
Я новичок в программировании и Linux, было бы очень полезно, если кто-нибудь сможет решить эту проблему.
Комментарии:
1. ~/.bashrc используется только для интерактивных оболочек bash.
2. Обратите внимание, что «скрыть» — плохой термин для того, что вы описываете. Вы можете избавить себя от необходимости вводить информацию вручную, но переменные среды и файлы конфигурации оболочки не являются безопасными средствами для хранения или передачи конфиденциальной информации, такой как пароли.
3. Этот ответ
Jenny D
на вопрос о скрытии паролей в сценариях оболочки содержит превосходные рекомендации по безопасности паролей. Я рекомендую вам прочитать это.
Ответ №1:
Sublime наследует свои переменные среды из среды, в которой он запущен. Итак, если вы запустите его bash
, он сможет прочитать все переменные, которые вы установили при запуске. Если вы запустите его из sublime_text.desktop
файла (значок в меню или на боковой панели), он сможет считывать только переменные env, которые были установлены при запуске процесса запуска, то есть при входе в систему. Итак, если вы не хотите всегда запускать из командной строки, поместите переменные среды в свой ~/.profile
файл, затем выйдите из системы и снова войдите. Ввод их ~/.bashrc
не будет работать, так как это читается только для интерактивных сеансов.
Кроме того, вы можете определить переменные env в своей системе сборки. Пример может выглядеть примерно так:
{
"shell_cmd": "python3 -u "$file"",
"file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8",
"MYVAR1": "value1",
"MYVAR2": "value2"
}
}
Преимущество этого заключается в возможности изменять переменные и значения без необходимости выхода из системы и повторного входа.
Ответ №2:
Я думаю, что MattDMo затронул это (но просто чтобы уточнить, почему это важно — поскольку я недавно решил эту же проблему)
Ваша среда IDE наследует переменную env из программы-запуска. Чтобы ваш новый env var вступил в силу: выключите и перезапустите IDE.
Ответ №3:
Вы устанавливаете переменную среды для своего локального пользователя. Скорее всего, Sublime должен быть запущен от имени другого пользователя. Вы можете выяснить это с top
ps
помощью команды or .
Если вы хотите установить глобальные переменные, изучите /etc/profile или /etc/environment .
Комментарии:
1. Нет, вы не хотите запускать редактор от имени другого пользователя, и вы определенно не хотите возиться с глобальными переменными и
/etc/
файлами…