「$PATH」に次のタイプのパス名を使用するのは安全ですか?

「$PATH」に次のタイプのパス名を使用するのは安全ですか?

次の種類のパス名を使用するのは$PATH安全で良い習慣です。

  • パス名が空です。

    findutilsのマニュアルには、空の$PATHパス名を含めると安全ではないと記載されていますが、その理由は何ですか?

    空のパス名は絶対パス名ですか、それとも相対パス名ですか?

  • チルダまたはファイル名拡張子を含むパス名。

    ユーザーは、同様のシェル$PATHでチルダまたはファイル名拡張を一貫して理解して実行できますか?$PATH

    PATHたとえば、シェル起動スクリプトで値を設定する場合、シェルが起動ファイルを~/.profile実行することを考慮することは重要ですか?

    チルダ拡張に関する項目が見つかりました。https://unix.stackexchange.com/a/154290/674

  • 現在の作業ディレクトリ。バラより追加してください。安全ですか?私の道は?どうですか?

ありがとうございます。

ベストアンサー1

PATHこの参照に空の要素がある場合は、'.'安全ではないと見なすことができます。

端にドットがある場合や空の要素がある場合でも、あまり安全ではありませんPATH。これは、スペルミスのあるシステムバイナリ名を使用するディレクトリにバイナリを置いた場合にのみヒットするからです。

その逆も同様であるため、CDPATHドットがないか空の要素がある場合、cd現在のディレクトリにサブディレクトリが見つかりません。

文字列内のチルダをPATH理解できません。これが、POSIX標準がシェルマクロを割り当てるときにコマンドラインでコロンの後にチルダシーケンスを拡張する必要がある理由です。

私の答えの後、質問に追加されたテキストに関しては、これらのチルダ文字はコマンドを実行する前に拡張されます。

おすすめ記事