Почему переменные среды, добавленные в .profile, не отображаются на экране

Я использую Ubuntu 12.04

Я добавил

export LD_LIBRARY_PATH=/home/dspies/workspace/hdf5-1.8.11-linux-shared/lib

в .profile

, но когда я вхожу в систему, открываю терминал и ставлю echo $LD_LIBRARY_PATH, ничего не происходит .

Когда я переключаюсь в ctrl-alt-F1 и захожу в систему, echo $LD_LIBRARY_PATH выдаёт

/home/dspies/workspace/hdf5-1.8.11-linux-shared/lib

, но затем, когда я запускаю screen, echo $LD_LIBRARY_PATH изнутри экрана снова становится пустым

При каких обстоятельствах можно ожидать установки переменных окружения из .profile? (интересно, что любые изменения в PATH, сделанные в .profile, всегда отображаются)

РЕДАКТИРОВАТЬ: Извините, я думаю, я не уточнил, что я действительно хотел знать, что: Как я могу установить переменную среды что я имею в виду, чтобы быть установленным где-нибудь (например, на экране, в терминале, когда я вхожу в систему, и когда я ssh в)?

3
задан 22 May 2013 в 12:47

3 ответа

Ответ:

Я должен установить их в .pam_enviornment

См. Здесь https://help.ubuntu.com/community/EnvironmentVariables

Я думаю, что это один из самых распространенных вопросов, я не знаю, почему никто не дал мне правильный ответ, когда я задал этот вопрос.

0
ответ дан 22 May 2013 в 12:47

Из руководства по Bash:

Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.

Это означает, что если у вас есть .bash_profile или .bash_login в вашей домашней папке, то bash не будет читать содержимое вашей .profile. Кроме того, если он не запущен в интерактивной оболочке входа, .profile также не будет прочитан.

0
ответ дан 22 May 2013 в 12:47
echo $0

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

Вы используете bash оболочка. Необходимо добавить эту строку

export LD_LIBRARY_PATH=/home/dspies/workspace/hdf5-1.8.11-linux-shared/lib

кому: ~/.bash_profile файл.

Править:

Можно найти, что другой вход в систему представляет названия scipt различных оболочек, здесь

EDIT2:

Даже я получил два различных ответа, когда я выполнился echo $0 на двух различных машинах. На одной машине я добрался bash и на другом я добрался -bash. Я задал тот вопрос здесь. Это - то, что я получил как ответ.

Processes with a - at the beginning of arg 0 have been run via login, or by exec -l in bash.

После чтения того ответа я сделал help exec и это читает, If the first argument is '-l', then place a dash in the zeroth arg passed to FILE, as login does.

1
ответ дан 22 May 2013 в 12:47

Другие вопросы по тегам:

Похожие вопросы: