Форум русскоязычного сообщества Ubuntu


Автор Тема: Вопрос по переменным окружения  (Прочитано 728 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alixey

  • Автор темы
  • Любитель
  • *
  • Сообщений: 87
    • Просмотр профиля
Вопрос по переменным окружения
« : 19 Января 2022, 16:14:04 »
Есть файл /etc/profile.d/oracle.sh, в котором задаются некоторые переменные (в частности ORACLE_HOME и LD_LIBRARY_PATH).
Но когда я запускаю шелл, в нем есть переменная ORACLE_HOME, но нет переменной LD_LIBRARY_PATH.
Если вызвать файл вручную (. /etc/profile.d/oracle.sh), то переменная LD_LIBRARY_PATH в окружении появляется.
Впрочем, если зайти под суперпользователем (или сделать sudo -i), то переменная LD_LIBRARY_PATH в окружении так же появляется.
А как бы сделать, чтобы она добавлялась сама под обычным пользователем?

Пользователь добавил сообщение 19 Января 2022, 16:43:21:
Если в ~/.bashrc добавить строчку ". /etc/profile.d/oracle.sh", то проблема снимается.
Но в документации написано, что /etc/profile это скрипт system-wide, то есть скрипт должен запускаться сам по себе.
« Последнее редактирование: 19 Января 2022, 16:43:21 от alixey »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2566
    • Просмотр профиля
Re: Вопрос по переменным окружения
« Ответ #1 : 19 Января 2022, 21:48:13 »
Попробуйте внести LD_LIBRARY_PATH в /etc/environment.
Пётр.

Оффлайн alixey

  • Автор темы
  • Любитель
  • *
  • Сообщений: 87
    • Просмотр профиля
Re: Вопрос по переменным окружения
« Ответ #2 : 20 Января 2022, 09:00:46 »
Да, это помогает (впрочем, как и добавление в ~/.bashrc).

А вообще, почему конкретная переменная может не загружаться?
Файл /etc/profile.d/oracle.sh выглядит так:
base=/opt/oracle
version=instantclient
export ORACLE_HOME=$base/$version
export LD_LIBRARY_PATH=$base/$version
export LANG=ru_RU.UTF-8
export NLS_LANG=RUSSIAN_RUSSIA.UTF8
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export NLS_NUMERIC_CHARACTERS=.,

Если не вызывать этот скрипт вручную (или из ~/.bashrc), то я вижу в окружении все переменные, кроме LD_LIBRARY_PATH.
Почему эта конкретная переменная остается пустой?


Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27978
    • Просмотр профиля
Re: Вопрос по переменным окружения
« Ответ #4 : 28 Января 2022, 16:13:14 »
В ~/.profile (или ~/.bash_profile, смотря какой вы используете) должен быть блок

for f in /etc/profile.d/*; do
    test -f "$f" && . "$f"
done

Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2566
    • Просмотр профиля
Re: Вопрос по переменным окружения
« Ответ #5 : 28 Января 2022, 21:37:16 »
Так в /etc/profile запускаются скрипты из /etc/profile.d.
Пётр.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27978
    • Просмотр профиля
Re: Вопрос по переменным окружения
« Ответ #6 : 28 Января 2022, 22:54:04 »
Значит, либо не запускаются, либо что-то их перебивает.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.019 секунд. Запросов: 21.