最初のコマンドが失敗し、2番目のコマンドが成功するのはなぜですか?
$ cd ~"/mydata"
bash: cd: ~/mydata: No such file or directory
$ cd ~/"mydata"
答え1
方法チルダ拡張仕事はこれですチルダプレフィックス引用符のない最初のスラッシュまでのすべての文字で構成され、引用符のないスラッシュが~
ない場合は、単語の末尾に追加されるすべての文字で構成されます。その後、発生する置換はチルダの接頭辞に依存し、特殊なケースです。それ以外の場合は~
削除され~-
、残りの文字はユーザー名として扱われます。参照してください(シェルが Bash でない場合は、シェルのマニュアルページを参照してください)。~+
~
man bash
チルダ
~"/mydata"
の後ろリーダースラッシュなので、チルダプレフィックスは~/mydata
;チルダプレフィックスと呼ばれるユーザーアカウントがないため、置き換えられず、/mydata
シェルは文字通り名前付きディレクトリを検索しません~/mydata
。チルダ
~/"mydata"
の後には引用符のないスラッシュが続くため、チルダが設定されている場合はチルダが$HOME
ifの内容に置き換えられHOME
、それ以外の場合はユーザーのホームディレクトリ名に置き換えられます(から取得/etc/passwd
)。/home/
ユーザー名ディレクトリ名と同じです/mydata
。