環境変数を/usr/local/binに入れるのは良い考えですか?

環境変数を/usr/local/binに入れるのは良い考えですか?

私はaws cfnを使用してubuntuインスタンスを起動しており、cfn起動スクリプトで指定された変数をインスタンスのスクリプトに渡す必要があります。たとえば、「db-server=db-2.domain.com」を渡すことができ、そのアドレスを知りたいインスタンスには多くのスクリプトがあります。

現在、/etc/profile.dにvarsを設定するファイルを作成していますexportが、これはbashがログインシェルで始まっている場合にのみ機能するため、これらの変数をどこでも使用できるようにするには追加の手順を実行する必要があります。

だから私は、例えばコンテンツget-db-host.shとして/ usr / local / binにファイルを生成し、echo "db-2.domain.com"すべてのスクリプトが何の変更もなく使用できると思いました。

これは良いアプローチですか?

答え1

これは良いアプローチですか?

私はあなたが言うすべてのスクリプトがシェルスクリプトであると確信しています。この場合、すべての変数を構成ファイルに入れることができます。

db-server=db-2.domain.com

標準の場所(たとえば)に配置し、/usr/local/etc/myapp/別のスクリプトから取得します。

. /usr/local/etc/myapp

/etcもちろん、一般を使用することもできます。

答え2

推奨されるアプローチはに変数を追加することです/etc/environment。このファイルはログイン時に読み込まれます。Ubuntuドキュメント):

特定のユーザーだけでなくシステム全体に影響を与える環境変数の設定は、システムまたはデスクトップセッションがロードされたときに実行される多くのシステムレベルのスクリプトに配置しないでください。

/etc/environment - このファイルはシステム全体の環境変数設定専用です。スクリプトファイルではありませんが、1行に1つの割り当て式で構成されています。特に、このファイルはシステム全体のロケールとパス設定を保存します。

だから修正し/etc/environment/て追加してください。

db-server=db-2.domain.com

答え3

私はこの考えに反対します。このディレクトリは/usr/local/bin(通常)特定のパッケージの一部ではないローカル実行可能ファイル用です。

あなたが何をしているのかわからない設定に置かずに、あなたの仕事をする必要がある他の人が明確に知っている場所に変数を置きます。

$HOME私はそれらをあなたのディレクトリのファイルに入れてから$HOME/.bashrc

はい

if [ -f $HOME/.my_aws_env ]; then
    . $HOME/.my_aws_env
fi

あるいは、素敵でトレンディな感じを一文に仕上げることもできます。

[ -f $HOME/.my_aws_env ] && . $HOME/.my_aws_env

関連情報