xcorp::When it rains, it pours.

"The nice thing about rain," said Eeyore, "is that it always stops. Eventually."

UID

シェルスクリプトを作ってて、変数名に UID を使ったら、

[xcorp@kornshell ~]$ ./hoge.sh
hoge.sh: line 7: UID: readonly variable

って怒られた。あれれ?と思って、調べてみたらこれですよ。

[xcorp@kornshell ~]$ set | grep ^UID
UID=1024
[xcorp@kornshell ~]$ man sh
       UID    Expands  to  the  user ID of the current user, initialized at shell startup.
              This variable is readonly.

ハァ?ってなもんですよ。どうやら bash の独自拡張らしい。そのスクリプトの中では GID って変数も使ってるから、ああこりゃ GID も使えないな、と思って別の変数名に置換して、念のため調べてみたらこれ。

[xcorp@kornshell ~]$ set | grep ^GID
[xcorp@kornshell ~]$ man sh
Pattern not found (press RETURN)

なんなの?どうしたいの?
こういう非対称性ってやたら気になりませんか?私だけ?