最初の拡張は機能しないのに、2 番目の拡張は機能するのはなぜですか?
チルダは引用符の外側で展開する必要があることは知っていますが、予想外にスラッシュも外側にある必要がありました。
#!/bin/bash
ls ~"/Documents/bashscripts/test.sh"
ls ~/"Documents/bashscripts/test.sh"
最初の拡張は機能しないのに、2 番目の拡張は機能するのはなぜですか?
チルダは引用符の外側で展開する必要があることは知っていますが、予想外にスラッシュも外側にある必要がありました。
#!/bin/bash
ls ~"/Documents/bashscripts/test.sh"
ls ~/"Documents/bashscripts/test.sh"
これは、チルダ展開の仕組みが微妙です。2 番目のケースでは、スラッシュが続くチルダが現在のユーザーのホーム ディレクトリに展開されます。最初のケースでは、"/Documents/bashscripts/test.sh" という名前のユーザーのホーム ディレクトリに、チルダに続く引用符付きの単語を展開しようとします。マンページのチルダ拡張セクションから:
…引用符で囲まれていない最初のスラッシュの前にあるすべての文字は、チルダ接頭辞と見なされます。チルダ接頭辞の文字が引用符で囲まれていない場合、チルダに続くチルド接頭辞の文字は、可能なログイン名として扱われます。…</p>