不完全なディレクトリ名が与えられたときにcdが自動的に選択するのは標準的な動作ですか?


17

と呼ばれる3つのフォルダーProjectAProjectBありProjectCます。をtab完了cdしてcd Projectを押すとEnter、が選択されProjectCます。これは、他の同様のケースにも当てはまることがわかりました。デフォルトでは、辞書式順序で最後になります(ただし、これは最後に変更/追加された可能性もあります)。

これはのデフォルトの動作cdですか?ここで誤って何かを設定しましたか?

OSX 10.10.3をbash 4.3で実行しています。

回答:


18

私はそのような行動に遭遇しません。しかし、私はそれを再現することができました。誤ってオプションを変更した可能性がありますcdspellBashリファレンスマニュアルを参照してください。

cdspell

設定すると、cdコマンドのディレクトリコンポーネントのスペルの小さなエラーが修正されます。チェックされるエラーは、転置文字、欠落文字、および多すぎる文字です。修正が見つかった場合、修正されたパスが出力され、コマンドが続行されます。このオプションは、対話型シェルでのみ使用されます。

私はそれを試しましたが、それは常にに与えられた引数のパスを修正しますcd。フォルダ内にProjectAProjectBおよびのように複数の可能性がある場合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

興味深いが、なぜディレクトリ順で最後のものを選ぶのですか?これは文書化されていないようです。
ファヒームミタ

そのためのソースが見つかりません。bashのソースコードにはspname、正しいスペルのファイル名を返すという関数があります。に触発されましたthe code in "The UNIX * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, pages 209 - 213.
カオス

ドキュメントのバグのように聞こえます。おそらくbashに報告する必要があります。そうした場合、回答にバグへのリンクを含めることができます。
ファヒームミタ

@chaosああ、そうです、私は自分でshopt -s cdspell設定したことがわかります.bashrc(osx / linuxを相互互換性にするために多くのコピーアンドペーストを行ったので、.bashrc明らかにもっと注意を払うべきでした)。私は実際にそれが好きです、私はちょうど理由を見つける検索を見つけることができませんでした。ありがとう!
ロブ・ホルト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.