小さな星がほらひとつ

読者です 読者をやめる 読者になる 読者になる

気づかない間にカレントディレクトリがpathに登録されていた話

スポンサーリンク

先日タイトルのような現象が起きました。

環境

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時間ほどハマっていました。