R.A. Epigonos et al.

[dash] readonly 変数に対してチルダ (ホームディレクトリ) は展開されない

ホームディレクトリを表すのに "~" チルダを使うけど、readonly 宣言した変数の右辺にホームディレクトリを意味する~を入れても、展開されずに~のままになる。代入とreadonly 宣言を同時にするとこういう挙動をする。先に代入した後に改めて readonly 宣言すれば問題なし。

$ cat --number test.sh
     1	#!/bin/dash
     2	set -eux;
     3	
     4	A=~/.profile;
     5	readonly B=~/.profile;
     6	readonly C="${HOME}/.profile";
     7	D=~/.profile;
     8	readonly D;
     9	
    10	ls "${A}" "${B}" "${C}" "${D}";
    11	exit 0;
$ ./test.sh
+ A=/home/u00/.profile
+ readonly B=~/.profile
+ readonly C=/home/u00/.profile
+ D=/home/u00/.profile
+ readonly D
+ ls /home/u00/.profile ~/.profile /home/u00/.profile /home/u00/.profile
ls: cannot access ~/.profile: No such file or directory
/home/u00/.profile  /home/u00/.profile  /home/u00/.profile

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-02-05T15:43:14+09:00
  2. Modified: 2008-02-05T15:43:14+09:00
  3. Generated: 2023-08-27T23:09:16+09:00