Я использую 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 в)?
Ответ:
Я должен установить их в .pam_enviornment
См. Здесь https://help.ubuntu.com/community/EnvironmentVariables
Я думаю, что это один из самых распространенных вопросов, я не знаю, почему никто не дал мне правильный ответ, когда я задал этот вопрос.
Из руководства по Bash:
Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.
blockquote>Это означает, что если у вас есть
.bash_profile
или.bash_login
в вашей домашней папке, то bash не будет читать содержимое вашей.profile
. Кроме того, если он не запущен в интерактивной оболочке входа,.profile
также не будет прочитан.
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
.