Linuxは複数の連続パス区切り文字(/home///username///files)をどのように処理しますか?

Linuxは複数の連続パス区切り文字(/home///username///files)をどのように処理しますか?

ファイルの場所をscpサブプロセスに渡すPythonスクリプトを作成しています。どちらも、/パスに ' が 2 つあるようにファイル名とパスを連結することもできる状況に置かれています。ファイル区切り文字が複数あっても bash は気にしないことを知っていますが、これをどのように変更できるか知りたいです。 bashは追加の/sを削除しましたか、それとも本当に重要ではありませんか?

この質問をする理由は、接続時に追加のコード行を確認する時間を節約できるからです/。あまりないことを知りながらも気になることもありますね。cd //usrパスに複数のsを使用することcd /usrが重要であることを意味する行(代わりに)を含むbashスクリプトがあります。/

ベストアンサー1

複数のスラッシュが許可され、単一のスラッシュと同じです。 ~からシングルUnix仕様(バージョン4)基本定義§3.271パス名: "複数の連続スラッシュは1つのスラッシュと同じと見なされます。"

1つの例外があります。パス名が2つの連続したスラッシュ文字で始まる場合、前のスラッシュ文字の後の最初のコンポーネントは実装で定義された方法で解釈できます。 (引用する:基本定義§4.13パス名の確認)。 Linux自体ではこれを行いませんが、一部のアプリケーションでは実行でき、他のUNIXシステム(Cygwinなど)では実行します。

パス名の終わりが終わると、パス/名はディレクトリを参照します。存在する(POSIX 1003.1-2001(Single Unix v4)の基本定義§4.11パス名の確認、末尾は/末尾と同じです/.POSIX 1003.1-2008(Single Unix v4) 基本定義 §4.13/.存在しないディレクトリの場合(たとえば、mkdir foo/動作するが動作しないmkdir foo/.場合)と同等にするための要件を削除しました。理由変更)。

ディレクトリエントリで動作するプログラムの場合、fooディレクトリへのシンボリックリンクの場合、転送はfoo/プログラムがシンボリックリンクではなくディレクトリで機能するようにする方法です。

1これは、パス名解決(ファイルにアクセスするときなど)にのみ適用されます。ファイル名の操作は異なる場合があります。例えばbasenameそしてdirname末尾のスラッシュを無視します。

おすすめ記事