視聴後.sh ファイルを使用した環境変数の設定そして環境変数を恒久的に設定する方法.sh
ファイルで永続的な環境変数を適切に設定する方法はまだ混乱しています。 (私はLinuxをたくさん使うので、確かに初心者です。)
私の特別なケースには次のものがありますsetup-env.sh
。
# Copyright (c) 2015-2019 LunarG, Inc.
# source this file into an existing shell.
VULKAN_SDK="$(dirname "$(readlink -f "${BASH_SOURCE:-$_}" )" )/x86_64"
export VULKAN_SDK
PATH="$VULKAN_SDK/bin:$PATH"
export PATH
LD_LIBRARY_PATH="$VULKAN_SDK/lib:${LD_LIBRARY_PATH:-}"
export LD_LIBRARY_PATH
VK_LAYER_PATH="$VULKAN_SDK/etc/vulkan/explicit_layer.d"
export VK_LAYER_PATH
/home/jonathan/.bashrc
以下を含めるように編集できます。
export VK_LAYER_PATH="/home/jonathan/Vulkan/1.2.170.0/x86_64/etc/vulkan/explicit_layer.d"
export VULKAN_SDK="/home/jonathan/Vulkan/1.2.170.0/x86_64"
export LD_LIBRARY_PATH="/home/jonathan/Vulkan/1.2.170.0/x86_64/lib:"
これが. setup-env.sh
彼らに走ることがすることです。
しかし、これは厄介で不必要に難しいようです。スクリプトを実行して永続的な環境変数を設定するより良い方法はありますか?
答え1
これが複雑な理由は、スクリプトが現在の環境のコピーである独自のサブシェルで実行されるためです。したがって、スクリプトが終了して元のシェルに戻ると、スクリプトで設定したすべての変数は削除されます。しかし、この方法で変数を設定することは本当に重要なので、これを達成するためのツールがあります。次のコマンドを探しています.
(または)。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
すべての作業を1つのステップで実行できます。
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"
追加資料:
答え2
期間が「厄介で不必要に難しい」場合は、私がしたようにファイルにエイリアスを宣言できます.bashrc
。たとえば、
alias setenv=". ~/path/to/setup-env.sh"
次に、コマンドを実行setenv
して現在のシェルで実行します。 (help alias
詳しくは参考資料をご覧ください。)