Глобальная переменная, не автоматически загруженная из .profile

Для установки CUDA 9.1 я читал, удобно добавить свою папку установки к PATH и LD_LIBRARY_PATH, как:

PATH="/usr/local/cuda-9.1/bin:$PATH"
LD_LIBRARY_PATH="/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH"

После этого и этой SE отвечает, что я пытался отредактировать мой .profile файл, добавляющий последние строки как ниже.

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"

# settings for CUDA
PATH="/usr/local/cuda-9.1/bin:$PATH"
LD_LIBRARY_PATH="/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH"

С .profile как выше, я могу открыть терминал и работать echo $PATH видеть инструкцию работало, как PATH теперь содержит папку, на которую я указал. Однако по некоторым причинам это не работает на LD_LIBRARY_PATH.

Я предположил, что проблема, возможно, была этим LD_LIBRARY_PATH не существовал прежде, таким образом, я попытался изменить .profile с немного отличающимся кодом ниже в последних 2 строках.

PATH="/usr/local/cuda-9.1/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64

Снова, однако, неудачно.

Замечая первое предупреждение в начале .profile, Я проверил, был ли у меня a ~/.bash_profile или a ~/.bash_login файлы. Они не существуют, и в любом случае они не объяснили бы как мой PATH успешно обновляется.

Проводя некоторое исследование, я наткнулся на этот другой ответ, который объясняет это .profile не обязательно выполняется, когда я открываю терминал. Однако снова, как я могу объяснить это PATH обновляется?

Какова могла быть проблема? Есть ли что-то не так с моим синтаксисом?

Править:

Я пытался выйти из системы и на том, после того, как я изменился .profile содержать

PATH="/usr/local/cuda-9.1/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64

и это теперь работает. Если я ввожу терминал и тип echo $LD_LIBRARY_PATH Я наконец вижу его. Я все еще не понимаю, почему первая версия моего списка инструкции не работала...

1
задан 19 February 2018 в 23:11

2 ответа

Причина, почему PATH работы без export то, что она установлена как переменная окружения прежде ~/.profile, выполняется. К изменение существующая переменная среды,

VAR=foo

достаточна.

К добавляют переменная к среде, необходимо сделать

export NEWVAR=bar

, см. EnvironmentVariables для дополнительных материалов для чтения по теме.

2
ответ дан 7 December 2019 в 13:26

Я думаю, что Ваше решение очевидно, export, ключевое слово добилось цели и требуется "экспортировать" переменные окружения для использования. Можно экспортировать переменные оболочки с помощью команды экспорта.

, Чтобы видеть, что список экспортируемых переменных работает export -p

, См. man bash:

export [-fn] [name[=word]] ...
export -p
           The  supplied  names are marked for automatic export to the environment of subsequently executed commands.  If the -f option is given, the names
           refer to functions.  If no names are given, or if the -p option is supplied, a list of names of all  exported  variables  is  printed.   The  -n
           option  causes  the  export property to be removed from each name.  If a variable name is followed by =word, the value of the variable is set to
           word.  export returns an exit status of 0 unless an invalid option is encountered, one of the names is not a valid shell variable name, or -f is
           supplied with a name that is not a function.
0
ответ дан 7 December 2019 в 13:26

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

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