`~/Documents`は相対パスか絶対パスですか?

`~/Documents`は相対パスか絶対パスですか?

ただの単語帳なのに頭の中にずっと歩き回りました。

練習試験から出たんだリニアPIC本を準備してください。本によると、正解は、これが~/Documentsホームディレクトリに相対的であるため、相対ディレクトリであるということです。

しかし、この本には誤字や誤りが多すぎて、その中に書かれた内容を当然と考えることはできません。私はここに同意しません。~これは、シェルによって変数の内容または現在のユーザーのホームディレクトリへのパス$HOMEに拡張された変数として機能するためです(参照:man bash)、したがって実際のパスは/home/myuser/Documents実際には絶対ディレクトリです。

でもウィキペディア、今回はこのトピックについて私には何の役にも立たないようです(たとえそのトピックに関する本が間違っていることを確認するようですが)。

絶対パスまたはフルパスは、現在の作業ディレクトリに関係なく、ファイルシステムの同じ場所を指します。これを行うには、ルートディレクトリが含まれている必要があります。

対照的に、相対パスは指定された作業ディレクトリから始まり、完全な絶対パスを提供する必要はありません。

ここでも私は同意しません。この定義によれば、/opt/kde3/bin/../lib現在の作業ディレクトリに依存しないパスは絶対パスでなければなりませんが、これについての現在の理解は、パスを相対パスにする本の著者と一致します。

クイックウェブ検索が私の欲求不満を加えたそうです。マリアム - ウェブスター辞書:

絶対パス- ルートディレクトリへの相対パス。最初の文字はパス名の区切り文字でなければなりません。

もしそうなら、絶対ディレクトリと見なされませんか$HOME/Documents$HOMEそれとも、この定義は変数拡張を意味しますか?それでは、Shellの~性格はどうですか?相対ディレクトリと絶対ディレクトリの明確な定義をどこかで見つけることができますか?私はこれまで間違っていたのだろうか?

ベストアンサー1

これは本質的に用語の定義に関する質問です。したがって、あなたの目的に応じて、答えはLPICが望むものです。しかし、我々は技術的な事実に基づいていくつかの結論を下すことができます。

'~/Documents'に進むとシステムコール~、現在のディレクトリでフルネームのディレクトリを探します(失敗する可能性があります)。したがって、使用されたパス名の概念に応じてコア、これは相対パスですが、これは私たちが意味するものではありません。

~構文は次のように実装されます。シェル(および便宜上、これを模倣するその他のプログラム)拡大する実際のパス名になります。説明すると~/Documents(つまり、シェル構文)とほぼ同じです。絶対パスでなければならないので$HOME/Documents$HOMEの価値 $HOME/Documentsまた絶対パスです。しかし、私たちが参照するパスになるには、テキストをシェルで拡張する必要が$HOME/Documentsあります。~/Documents

したがって、正確で一貫して言いたい場合は、~/Documentsそうすると答えます。絶対パスに拡張されるシェルスクリプトの断片です。

おすすめ記事