これは、ほとんどすべてのシェルで使用できる一般的な手順です。いずれにせよ、ユーザーが通常どのシェルでログインするかを知る必要があります:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
次に、このシェルが通常読み込むドットファイルを把握する必要があります。
man $shell
動作するショートカットは、シェル名を含むそれらのドットファイルをリストすることです:
ls ~/.*${shell}*
ログイン中にファイルの1つが実際に読み取られたかどうかを確認する場合は、それぞれのファイル名を単に印刷できます。たとえば、次のようになります。
echo .bashrc
ログインすると、どのファイルが読み取られているかを確認でき、どのファイルを変更するかを決定できます。echo "$0"
の値は$0
シェルがドットファイルを処理する方法に依存し、誤解を招く可能性があるため、使用または類似の試みをしないでください。
変数を「永続的に」宣言することになると、これはセッションだけに拡張されることに注意してください。セッションなしで変数の値にアクセスする方法はないため、1つの外部では意味がありません。「読み取り専用」を意味する場合、それはシェルに依存しており、Bashでは次を使用できます。
declare -r VAR
値が既にある場合、または
declare -r VAR=value
同時に割り当てます。すべてのシェルにこの機能があるわけではありません。
ほとんどのシェルで変数を宣言するには、変数名([A-Za-z_][A-Za-z0-9_]*
)を使用し、その後に等号(および等号の前後にスペースを入れない)、値(値が単純でない場合は引用符で囲むことが望ましい)を使用する必要があります[A-Za-z0-9_]+
。例えば:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1