回答:
私はそのような行動に遭遇しません。しかし、私はそれを再現することができました。誤ってオプションを変更した可能性がありますcdspell
。Bashリファレンスマニュアルを参照してください。
cdspell
設定すると、cdコマンドのディレクトリコンポーネントのスペルの小さなエラーが修正されます。チェックされるエラーは、転置文字、欠落文字、および多すぎる文字です。修正が見つかった場合、修正されたパスが出力され、コマンドが続行されます。このオプションは、対話型シェルでのみ使用されます。
私はそれを試しましたが、それは常にに与えられた引数のパスを修正しますcd
。フォルダ内にProjectA
、ProjectB
およびのように複数の可能性がある場合ProjectC
、デフォルトではディレクトリ順序の最後のフォルダになります。それはで確認できls -U
ます。例を参照してください。
user@host:~$ ls -Ul
total 0
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectA
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectB
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectC
user@host:~$ cd Project<tab><tab>
ProjectA/ ProjectB/ ProjectC/
user@host:~$ cd Project
ProjectC
user@host:~/ProjectC$
その動作を無効にするには:
shopt -u cdspell
spname
、正しいスペルのファイル名を返すという関数があります。に触発されましたthe code in "The UNIX * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, pages 209 - 213.
shopt -s cdspell
設定したことがわかります.bashrc
(osx / linuxを相互互換性にするために多くのコピーアンドペーストを行ったので、.bashrc
明らかにもっと注意を払うべきでした)。私は実際にそれが好きです、私はちょうど理由を見つける検索を見つけることができませんでした。ありがとう!