コマンドラインから使う explorer に渡すパスの話

ずっと誤解していた。

os.path alternative (force using forward slash rather than backslash, even if on windows) にちょっと関連。

ワタシは当然普段からずっと MSYS bash コマンドラインで生活しているわけね。そこから emacs を起動し、emacs で事足りることは emacs で用を足し、bash で事足りることは bash で用を足し、無論普通のネイティブアプリケーション(それこそ色々)は bash も emacs も関係ないところ(スタートメニュー)から起動して用を足し、「explorer でなければ出来ないこと/やりにくいこと」だけ explorer を起動して用を足す、としている。

explorer の起動は無論「スタートメニュー」からも起動したりするけれど、当然コマンドラインからも起動して使うこともある。

そうなんだけれど、「大昔にトライしてダメだった経験」から、「カレントディレクトリを指定して起動」以外を試みようともしてこなかったのね。つまり:

1 me@host: ~$ explorer  # 引数なしで起動すると、「ライブラリ」を開く
2 me@host: ~$ explorer . # カレントフォルダを開く

指定間違いすると必ず「マイドキュメント」を開くのね。これを嫌って、そしてもはや単なる手癖で、これ以上やろうとしてなかった、てこと。(むしろフォルダ指定はほぼ出来ないもんだとすら思っていた節がある。)

今改めてやってみたら、「指定間違いすると必ず「マイドキュメント」を開く」ことはそうだけど、これ、単に「パス区切りは必ずバックスラッシュでねばならぬ」ってだけだった。うーバカ過ぎないかそれ、だってアドレスバーではスラッシュ形式も受け付けるじゃないか…。:

 1 me@host: ~$ explorer mydir/  # 指定間違いなので「マイドキュメント」
 2 me@host: ~$ explorer mydir  # 期待通り「mydir」
 3 me@host: ~$ explorer mydir/libs  # 指定間違いなので「マイドキュメント」
 4 me@host: ~$ explorer "mydir\\libs"  # 期待通り「mydir/libs」
 5 me@host: ~$ explorer mydir/libs/  # 指定間違いなので「マイドキュメント」
 6 me@host: ~$ explorer "mydir\\libs\\"  # 期待通り「mydir/libs」
 7 me@host: ~$ explorer c:/  # 指定間違いなので「マイドキュメント」
 8 me@host: ~$ explorer "c:\\"  # 期待通り「c:」
 9 me@host: ~$ explorer c:  # 期待通り「c:」
10 me@host: ~$ : # 以下 MSYS の pwd 固有
11 me@host: ~$ explorer `pwd -W mydir/libs/`  # 指定間違いなので「マイドキュメント」
12 me@host: ~$ explorer `pwd -W mydir/libs/ | sed 's@/@\\\\@g'`  # 期待通り「mydir/libs」

今更こんなことを知った。嬉しいか? 嬉しくない。os.path alternative (force using forward slash rather than backslash, even if on windows) で書いた文句そのもの。何倍タイプすりゃいーんじゃ、でもあるし、MSYS な世界にいるとパスは基本 posix マナーなので、逐一読み替えねばならん。

うーん…こんなことのためにラッパースクリプト、書く? …今はやらんけど面倒になってきたらやろうか…。