Help us understand the problem. What is going on with this article?

Amazon Linux 2 のbashでリダイレクト先が補完されなくなった

More than 1 year has passed since last update.

困ったこと

# 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

ぼやき

(この辺て困ることでも無いと、使い始めた時点の知識からなかなかアップデートされないのでおじさんたちは注意しよう)

accakr
文系卒 -> SIer卒 -> 株式会社ヴァリューズでエンジニア なんだかんだインフラアーキテクチャが一番長い
https://www.valuesccg.com/
valuesccg
「インターネット行動ログ分析サービス」など、デジタルマーケティング領域での新たな価値創造を通し、各企業の成長支援を行っています。エンジニア募集中。
https://www.valuesccg.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away