先日タイトルのような現象が起きました。
環境
Solaris11
事象
同じサーバ内の同じシェルに対して、ユーザによってパスが通っていたり通っていなかったりした。
例えばユーザAとユーザBがいる時、
#ユーザA test.sh #実行できる #ユーザB test.sh #ファイルが見つからず、実行できない(./test.shなら実行できる)
このとき環境変数PATHを確認し、カレントディレクトリは設定されていなかった。
・・・・と思っていた。
確認したらそれぞれこんな感じになっていた。
#ユーザA PATH=/bin:/usr/bin:/hogehoge …/sbin: #ユーザB PATH=/bin:/usr/bin:/hogehoge …/sbin
お分かりいただけただろうか。そう、パスが通っていたユーザAのPATHには末尾に(不要な)「:」が付いていたのだ!!
これって要するにPATHに空文字が設定されていれば、カレントディレクトリにパスを通すってことなのだろうか。
ちなみに
PATH=/bin::/sbin
のように、末尾ではなく間に空文字を入れても有効でした。
これって常識なの・・・?
気づくのに2時間ほどハマっていました。