謎現象が起きた
カレントディレクトリのファイルがコマンドとして実行されてしまう。
takuya@Desktop$ ./a aaaaaaaaaaaaaaaaaaaaaa takuya@Desktop$ a aaaaaaaaaaaaaaaaaaaaaa
bash で、このような動的に変化するPATHを認めてしまうと思いもよらない動作を引き起こすから、カレントディレクトリ( . ) はPATHから除外されてるはずなんだが。
原因を調べた
アレコレしらべてみたけれど原因がなかなかわからなかった。
PATHに ::
が含まているとカレントディレクトリとして解釈されるらしい。しらんかった。
takuya@Desktop$ PATH=/bin:/usr/bin takuya@Desktop$ a -bash: a: コマンドが見つかりません takuya@Desktop$ PATH=/bin:/usr/bin:: takuya@Desktop$ a aaaaaaaaaaaaaaaaaaaaaa takuya@Desktop$
なんてこったい。
bashrc で:: がPATHに混じっていた。本当に驚いた。
実験したbash
今回ためしたbashはこれ。
takuya@$ bash --version GNU bash, バージョン 4.4.19(1)-release (x86_64-apple-darwin15.6.0) Copyright (C) 2016 Free Software Foundation, Inc. ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
2018-08-01 追記
バージョン情報を追記