上田と申します。 Vine 2.1CR を使っています。 bash を起動すると環境変数 i だけが消えてしまうと言う症状を見つけました。 PBS で バッチジョブに環境変数を渡そうとして気がつきました。 i といういかにもユーザが使いそうな変数を消されてしまうのが悩ましいです。 sh, csh, bash2 では起きず、bash -norc でも起きません。 %[1] i=2; export $i %[1] j=3; export $j %[1] echo $i.$j 2.3 %[1] bash %[2] echo $i.$j .3 %[2] exit %[1] echo $i.$j 2.3 原因はシステムのbashrc (/etc/bashrc)です。 bash-1.14 の問題なのか distribution の問題なのかは良く分かりません。 以下のパッチで一応解決出来ます。関数で括って local で変数を保護してあ ります。 この方法でも関数名を一つ消費してしまうのは確かなのですが、 あまり使わなさそうな関数名を選んだのと、関数を export するユーザは少ない だろうとこうしました。 もしも次のバージョンでもbash2でなくbashを標準のshellとするなら、修正を 検討して頂けると嬉しいです。 よろしくお願い致します。 ===================== *** /etc/bashrc.org Thu Sep 26 13:15:12 2002 --- /etc/bashrc Thu Sep 26 13:07:21 2002 *************** *** 11,27 **** --- 11,33 ---- case $TERM in xterm*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"' ;; *) ;; esac PS1="[\u@\h \W]\\$ " fi + function BASH_AUTO_LOAD_SYSTEM_PROFILE () { + local i; for i in /etc/profile.d/*.sh; do if [ -x $i ]; then . $i fi done - unset i + } + + BASH_AUTO_LOAD_SYSTEM_PROFILE + unset -f BASH_AUTO_LOAD_SYSTEM_PROFILE ===================== --HAL ======================================================================== (株)富士通研究所 ITコア研究所 ITアーキテクチャ研究部 上田晴康 E-mail: hal_ueda@xxxxxxxxxxxxxx ========================================================================