Прежде чем делать что-либо, что может привести к поломке вашей системы:
ИЛИ
Подойдите к одному из ваших товарищей, у которого такая же система, и:
Нет, серьезно:
Если кошка пройдёт по вашей клавиатуре при разбивке системы и нажмёт Del и y , у вас ничего не останется!
Причина сложности заключается в том, что скрипты выполняются в своей собственной суб-оболочке :копии вашей текущей среды. Таким образом, любые переменные, установленные сценарием, отбрасываются, как только сценарий завершает работу и возвращает вас в исходную оболочку. Однако,поскольку действительно важно иметь возможность устанавливать переменные таким образом, для этого есть инструмент. Вы ищете команду.
(илиsource
):
$ help.
.:. filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
Итак, в вашем случае, если вы хотите, чтобы переменные в этом файле были установлены в вашей текущей оболочке, вы должны сделать:
$. /path/to/setup-env.sh
Или, чтобы сделать это для каждой оболочки, вы должны добавить эту строку в свой~/.profile
(или, если он существует, в свой/.bash_profile
):
. /path/to/setup-env.sh
Вместо этого вы можете добавить его в ~/.bashrc
, но это будет менее эффективно, так как он будет считываться каждой новой интерактивной оболочкой без -входа в систему, которую вы открываете (это то, что вы получаете, когда открываете терминал в графическая система Linux ), тогда как ~/.profile
читается только оболочками входа в систему, поэтому его следует читать один раз при входе в систему и никогда больше. Теперь некоторые системы не используют источник ~/.profile
при графическом входе в систему, поэтому, если вы обнаружите, что он не работает в ~/.profile
, добавьте его в ~/.bashrc
.
Наконец, вы можете упростить это. Нет причин для отдельных определений переменных и команд export
, вы можете сделать это за один шаг:
export VULKAN_SDK="$(dirname "$(readlink -f "${BASH_SOURCE:-$_}" )" )/x86_64"
export PATH="$VULKAN_SDK/bin:$PATH"
export LD_LIBRARY_PATH="$VULKAN_SDK/lib:${LD_LIBRARY_PATH:-}"
export VK_LAYER_PATH="$VULKAN_SDK/etc/vulkan/explicit_layer.d"
Дополнительная литература:
Если период кажется вам «неудобным и излишне трудным», вы можете сделать то же, что и я, объявить псевдоним в вашем .bashrc
файле. Например:
alias setenv=". ~/path/to/setup-env.sh"
Затем просто запустите команду setenv
, чтобы запустить ее в текущей оболочке. (Для получения дополнительной информации см. help alias
.)