TMPDIRには末尾のスラッシュが必要ですか?

TMPDIRには末尾のスラッシュが必要ですか?

Unix / POSIX / Linuxシステムでは、TMPDIR変数を使用して一時ディレクトリを設定できます。ウィキペディア Open Group 仕様への参照これに言及してください。

これは私に答えを残しません。これにスラッシュを含める必要がありますか? (つまり、TMPDIR="/foo/bar"またはTMPDIR="/foo/bar/")。

オンラインで見つけた例を見ると、末尾のスラッシュはより一般的であると思われますが、明確な答えが欲しいです。これはどこでも標準化/明確化されましたか?

ベストアンサー1

最後にスラッシュを追加することと追加しないものの間に大きな違いはありません。末尾のスラッシュを使用すると、同様に構成されている場合は二重$TMPDIR/somethingスラッシュを含むパスを取得できますが、これはほとんどまたはまったく効果がありません。パス名の先頭の二重スラッシュは、TMPDIR=/これが違いがある場合にのみ特別に解釈できます。//foo/barは/foo/barとどのようなシステムで異なっていますか?

$TMPDIRディレクトリが名前付きシンボリックリンクによって参照され、パス名がスラッシュで終わると、リンクを検出できません。つまり、他の場所のシンボリックリンクにTMPDIR=/tmp/dir/andを使用すると、シンボリックリンクが逆参照されるため、常にfalseになります。/tmp/dir[ -L "$TMPDIR" ]

一部のユーティリティは、末尾のスラッシュ文字がない場合とは異なり、指定された引数を解釈することができます。これが問題の場合は、$TMPDIR/.引数に末尾のスラッシュがないことを確認する必要があります。後続のスラッシュが必要な場合、またはを使用してください。交換は末尾のスラッシュを削除します(存在する場合)。${TMPDIR%/}$TMPDIR/${TMPDIR%/}/${TMPDIR%/}多くの種類末尾のスラッシュ)。

POSIX は末尾のスラッシュの使用を強制しません。結局のところ、個人的な好みによって異なりますが、一貫性を維持するのが役立ちます。個人的には、私は通常、パス名を含む変数の末尾にスラッシュを追加しません。

また関連:

おすすめ記事