
私は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