CHASE_LINKS & cd -L
よく「なんとなくいい加減に覚えたまま、まんどくせまいっかーとかああ忙しい忙しい、と現実に押されてそのまま調べもせずに済ましているもの」(長い)ってあると思うけど。まず CHASE_LINKSと CHASE_DOTSを「おんなじジャンか」とか思っていた若かりし日(違う)の僕
quartz% pwd /home/tkuro quartz% ls -l asm lrwxrwxrwx 1 tkuro tkuro 43 2009-04-03 13:01 asm -> /usr/lib/gcc/i486-linux-gnu/4.2/include/asm/ quartz% setopt chasedots quartz% cd asm quartz% pwd /home/tkuro/asm quartz% cd .. <<< この時点で物理pathに変換される quartz% pwd /usr/lib/gcc/i486-linux-gnu/4.2/include <<< [この結果] quartz% setopt chaselinks quartz% cd asm <<< この時点で物理pathに変換される quartz% pwd /usr/lib/gcc/i486-linux-gnu/4.2/include/asm quartz% cd .. quartz% pwd /usr/lib/gcc/i486-linux-gnu/4.2/include <<< [あの結果]
[この結果]と[あの結果]だけ考えてて、「おんなじジャンか」とか思ってしまった若かり(ry
でもま、どうせ外部プログラムからはシェルの論理pathなんて知ったこっちゃ無いわけで
quartz% python -c 'import os; print os.getcwd()' /usr/lib/gcc/i486-linux-gnu/4.2/include/asm
なんにつかうのかなーっておそらくシェルスクリプト内部で作業ディレクトリを行ったり戻ったりなんかするときかなーと思って、でそれなら dirstack使えばいいんじゃないかなーとか微妙に気になるのでもう少し考えてみようとか思うんだけど、実はそれは本題ではなくって、、、
タイトルのお話は cd の -Lフラグのお話。-Lをつけると CHASE_LINKSしていても論理pathのままで扱う(物理path変換しない)という奴なんだけど、何も考えずに
quartz% setopt chaselinks quartz% cd -L asm quartz% pwd /usr/lib/gcc/i486-linux-gnu/4.2/include/asm
あれあれあれー?
quartz% cd .. quartz% pwd /usr/lib/gcc/i486-linux-gnu/4.2/include
変換してるジャン、どーなってるジャン。とかおばかな僕はしばらく悩んだ。んで、時間が無かったので無視した。いかんです。こういうのって無視すると後からとてつもなく気になってくる。しかも苦手意識が生まれるもんだから中々本腰で調べない。いかんいかん。
しかしまあ、わかってしまえば、、、
quartz% pwd -L /home/tkuro/asm quartz% cd -L .. quartz% pwd /home/tkuro
とか非常に簡単なことだったりした。-L つけてなかったから折角内部的には論理path /home/tkuro/asm を保持していても相対path ..をくっつけたとたんに /home/tkuro/asm/.. となってこれが変換対象。あたりまえ。
あ゛ー馬鹿すぎーる