重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

bashで、変数を以下のコマンドで読み取りにした後、
読み取り専用が解除できなくなりました。

readonly TEST=hoge

解除しようとして試したコマンド

declare +r TEST
readonly -n TEST
typeset +r TEST

読み取り専用を解除するには、どういったコマンドを打てばよろしいでしょうか?

A 回答 (4件)

意見がわかれた、より原典に近いもので確認しましょう。



http://www.gnu.org/software/bash/manual/bashref. …
より

declare
declare [-aAfFilrtux] [-p] [name[=value] …]
Declare variables and give them attributes.
(略)
Using ‘+’ instead of ‘-’ turns off the attribute instead, with the exceptions that ‘+a’ may not be used to destroy an array variable and ‘+r’ will not remove the readonly attribute.


和訳も見てみます。
http://linuxjm.sourceforge.jp/html/GNU_bash/man1 …
より。

declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
変数を宣言したり、変数に属性を与えたりします。
(略)
`-' ではなく `+' を使うと属性を消します。 ただし例外として、+a を使って配列変数を破棄することはできず、 +r を使って読み込み専用属性を消すことはできません。



ということで、その記事を書いた方の勘違いです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強になりました。

お礼日時:2013/05/24 14:21

なぜそんなサイトを参考にしているのかわかりませんが、解除は出来ません。


本家のマニュアルを読む限り、+オプションはaとrについては無効であると記述されています。

参考URL:http://www.gnu.org/software/bash/manual/bash.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強になりました。

お礼日時:2013/05/24 14:20

出来ないはずです。

出来たらreadonlyの意味が無い。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
ただ、以下のサイトではできるようなことが書かれてありました。
http://merry.whitesnow.jp/SEMICMD/SECTION6/secti …
read onlyとした場合は後からその変数に値を設定することは出来ませんので、宣言時に値を与えておきます。また、read onlyの解除は「+r」オプションで再宣言を行えば可能です。

お礼日時:2013/05/22 21:06

絶対に解除できないと思いますよ。


だからこそreadonlyの意味があります。

readonlyは、
「変数を読み取り専用として保護する」というより、
「絶対に上書きや削除ができない変数を定義する」というイメージです。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
ただ、以下のサイトではできるようなことが書かれてありました。
http://merry.whitesnow.jp/SEMICMD/SECTION6/secti …
read onlyとした場合は後からその変数に値を設定することは出来ませんので、宣言時に値を与えておきます。また、read onlyの解除は「+r」オプションで再宣言を行えば可能です。

お礼日時:2013/05/22 21:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!