bash変数を読み込み専用として定義する

bashのビルトインコマンドとしてtypesetdeclareという変数定義に関するコマンドがあります。declareコマンドの-rオプションを使用して定義した変数は読み込み専用となり、以降の変数への値代入が出来なくなります。

試しに、helloという文字列を代入したCONSTANT_VARという変数を読み込み専用として定義してみます。

1
2
3
4
$ declare -r CONSTANT_VAR='hello'

$ echo ${CONSTANT_VAR}
hello

このCONSTANT_VAR変数に新しい値を代入しようと試みたら以下のようなメッセージが出力され変数への代入が失敗します。

1
2
3
4
5
$ CONSTANT_VAR="goot morning"
-bash: CONSTANT_VAR: 読み込みのみの変数

$ echo ${CONSTANT_VAR}
hello