困ったこと
# test.sh を実行し、標準出力/エラー出力を log/test.log に書き出す
$ sh test.sh >& log/test.log
このとき、log/
を打とうとすると、補完されなかった。これまでは出来たのに。。と思って調べると以下の通り。
- Amazon Linux 2 では補完されない
- Amazon Linux (1) では補完される
- RHEL7 では補完される
bash_completion が原因?
-
rpm -qi bash_completion
で調べると、Amazon Linux 2にだけ入っている。 -
/usr/share/bash-completion/bash_completion
をrenameして再ログインすると、補完された。 - (が、当然bash-completionをもって機能する補完も使えなくなる)
- これまでの感じに戻したければこれでOK
より前向きな解決
>&
ではなく&>
を使おう
$ sh test.sh &> log/test.log
http://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html
「標準出力と標準エラー出力のリダイレクト」の項
意味は同じだが、&>
の方が推奨とされている。
これであればbash-completionが効いたままでもOK
ぼやき
(この辺て困ることでも無いと、使い始めた時点の知識からなかなかアップデートされないのでおじさんたちは注意しよう)