readonly
Korn Shellで変数を設定解除または変更できますか?私はAIX 5を使用しています。
答え1
聞いたこともありません。少なくとも明らかな方法は機能しません。つまり、unset
読み取り専用変数を使用したり、読み取り専用プロパティを削除したりすることはできませんtypeset +r
。これは私が見たすべてのkshバリアントとbashで動作しますが、明らかにkshバージョンがあります。AIX 4.3で許可されますtypeset +r
(zshでも許可されています)。
技術的には、外部でこれを行うことができます。デバッガを使用して ksh プロセスに接続し、ksh プロセスが可変読み取り専用情報を格納するメモリのビットを反転します。したがって、読み取り専用変数は絶対に安全な機能ではありません。
コマンドを開始する前に変数を別の値に設定する必要がある場合は、次のようにしますenv
。
readonly foo='some value'
env foo='other value' mycommand
または、限られた範囲(関数内)内で変数を読み取り専用にします。