У меня есть следующее в моем /etc/environment
:
http_proxy=http://myproxy.net:12345
После перезагрузки компьютера я вхожу в систему и проверяю переменную:
root@d6c44fa03243:/# echo $http_proxy
(empty)
Почему переменная не установлена?
Примечание: я должен упомянуть, что это докер-контейнер, хотя я не понимаю, почему это будет иметь значение.
РЕДАКТИРОВАТЬ
Подробнее о системе ( Ubuntu 16.04.4 Xenial Xerus
):
root@d6c44fa03243:/# uname -a
Linux d6c44fa03243 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@d6c44fa03243:/# cat /etc/issue
Ubuntu 16.04.4 LTS \n \l
EDIT2
Согласно документации Ubuntu :
/ И т.д. / окружающая среда
Этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.
ubuntu
environment-variables
dangonfast
источник
источник
/etc/profile
?/etc/environment
не оценивается?/etc/environment is not part of POSIX, it belongs to PAM (Pluggable Authentication Module), and only programs compiled with PAM support are able to use it (primarily login systems, which subsequently start the shell or user environment). This means it isn't even read by your shell.
.This file is specifically meant for system-wide environment variable settings
Ответы:
Поскольку инструменты UNIX созданы с учетом прозрачности , вы можете найти ответ с помощью
grep
. Неважно, работаете ли вы с полной ОС или контейнером (последнее означает, что вам, возможно, придется предпринять некоторые дополнительные шаги для установки инструментов, необходимых для того, чтобы вещи стали прозрачными).Проверьте, что вы
grep
установили в своей ОС и запуститеsudo grep -R "/etc/environment" /etc/*
. Это будет искать все системные скрипты и конфигурации, чтобы увидеть, какие из них используют этот файл. В стандартной версии ubuntu / xenial64 vagrant скрипты и конфигурации, использующие этот файл , в основном находятся в/etc/init.d/
/etc/pam.d/
, и/etc/rc.*.d/
.Следующие конфигурации как переменные
/etc/environment
в моей оболочке:/etc/pam.d/login /etc/pam.d/su /etc/pam.d/sshd
От
man pam_env
:Сделайте похожий поиск в вашем док-контейнере. Вы можете проверить, использует ли ваш контейнер
pam_env.so
.Скорее всего, наилучшим решением будет запуск процесса создания переменных среды,
/etc/environment
но этот совет дается без понимания того, что вы создаете. Использование в `/etc/rc*.d/ может быть хорошим примером того, как этого добиться.Большинство людей следуют советам @ ben-njeri и устанавливают переменные в файлах конфигурации по умолчанию для оболочки bash .
источник
sudo grep -r /etc/environment
помогло мне выяснить, что мне нужно изменить,/etc/pam.d/xrdp-sesman
чтобы прочитать сеансы xrdp/etc/environment
.Настройка
/etc/profile
или~/.bashrc
или~/.bash_profile
файлы , экспортировать переменные всякий раз , когда запускается новая оболочка./etc/profile
для всей системы, а другие для конкретных пользователей.Просто добавьте строки, как показано ниже в конце:
Таким образом, каждый раз, когда вы запускаете оболочку, переменные загружаются, и вы можете использовать их.
источник
Я имел (имел) эту проблему на Ubuntu 18.04. Я вообще не мог приступить
/etc/environment
к работе, но/etc/profile.d/
вместо этого использовал скрипт (как описано здесь ), и это сработало.Для получения дополнительной информации см. Мой ответ на этот связанный вопрос . Надеюсь, это поможет :)
источник