1. ホーム
  2. bash

[解決済み] bash の readonly 変数のアンセット

2023-03-22 01:14:31

質問

Bashで読み取り専用の変数を解除するにはどうしたらいいですか?

$ readonly PI=3.14

$ unset PI
bash: PI: readonly variable

なのか、それとも不可能なのか?

どのように解決するのですか?

実は を設定することで、読み取り専用の変数 .しかし、私はこれがハッキーな方法であることを警告しなければなりません。この回答は、あくまで情報として追加するものであり、推奨するものではありません。自己責任で使用してください。ubuntu 13.04、bash 4.2.45でテストしています。

この方法は、bash のソースコードとランプを少し知っている必要があります。 この の答えです。

$ readonly PI=3.14
$ unset PI
-bash: unset: PI: cannot unset: readonly variable
$ cat << EOF| sudo gdb
attach $$
call unbind_variable("PI")
detach
EOF
$ echo $PI

$

一応の答えは、バッチモードと他のコマンドラインフラグを使うことです。 F. Hauri の回答 :

$ sudo gdb -ex 'call unbind_variable("PI")' --pid=$$ --batch

sudo は、あなたのカーネルのptrace_scopeの設定に基づいて、必要であるかどうかしれません。より詳細については、vip9937 の回答のコメントを確認してください。