![シェルスクリプトの相対パス名はどのパスに基づいていますか? [コピー]](https://linux33.com/image/129759/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E7%9B%B8%E5%AF%BE%E3%83%91%E3%82%B9%E5%90%8D%E3%81%AF%E3%81%A9%E3%81%AE%E3%83%91%E3%82%B9%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
Bashスクリプトに相対パス(ファイル、ディレクトリ指定...)が含まれている場合、パスは次のように関連付けられます。
- Bashスクリプトの親ディレクトリのパス名、または
- bashスクリプトを実行している現在のディレクトリは何ですか?
Pythonスクリプト、Javaプログラム、Cプログラム、C ++プログラムで同様の質問をした場合...同じ答えがありますか?
ありがとうございます。
リンクされた質問と類似点はありません。私が尋ねるのは、プログラムの相対パスが何に基づいているかです。
答え1
親ディレクトリは、プロジェクトを含むディレクトリです。
- ファイルの場合、親パスは
.
ファイルがある場所であるためです。ファイル自体は./file
。 - ディレクトリの場合、親ディレクトリはディレクトリ自体
..
です。.
これはLinuxの一般的な表記法であり、広く知られています。理論的には、一部の言語では異なる表記法を使用することもできますが、例を挙げることはできません。
これは、脳の力を介して相対パスを簡単に推論できる絶対パスを使用する例です。
$ echo 'readlink -f "$0"' > script
$ ln -s script link
$ chmod +x script
$ ./script
/home/tomas/x/script
$ ./link
/home/tomas/x/script
$ readlink -f .
/home/tomas/x
$ readlink -f ..
/home/tomas