ユーザーディレクトリをPATHに追加しないのはなぜですか?

ユーザーディレクトリをPATHに追加しないのはなぜですか?

ユーザースクリプトの一般的なアドバイスは、そのディレクトリを$PATH次の場所に追加することです.profile

PATH="$PATH:$HOME/.myscripts" # or .bin or whatever

明らかに、これは前に追加するよりも安全です。PATH="$HOME/.myscripts:$PATH"

ただし、安全な方法で実行すると、同じ名前のシステムパッケージによってスクリプトが破棄されます。たとえば、スクリプト名をmountまたはとして指定すると、それを使用しようとすると予期しないことが発生します。import

多くの人がこれをバグではなく機能として見ることができることを知っています。しかし、個人的に私はスクリプト名を含む私がimport望むように指定し、驚かずに実行するようにしたいと思います。

私が知る限り、既存のリスクは次のとおりです。

  • ルートアクセスなどを行わずに悪質なスクリプトを再構築する可能性がありますls。 (しかし、これが標準の配布リポジトリからのみソフトウェアをインストールすると実際に問題になりますか?)
  • システムパッケージは他のシステムパッケージの代わりにユーザースクリプトを呼び出すことができます(ただし、mount実際には、ユーザーパッケージがフルパスなしで他のものを呼び出したことがありますか?悪い考えのようです)。

.profileシングルユーザーシステムに via を追加する場合、セキュリティリスクはどれほど深刻ですか?

答え1

私はあなたがここで頭に釘を打ったと思います。

使用しようとすると予期しないことが発生します

標準コマンドを使用してsquatsという実行可能ファイルを作成すると、問題が発生します。しかし、それはあなたのコンピュータなので、最終的にあなたはそれで欲しいことをすることができ、ベストプラクティスなどを行うことができます。

必要なものを達成するためのより安全な方法は、PATHを追加の方法で設定し、スクリプトに「安全な」名前(たとえばjortstek_mount)を指定してから、次の行に沿ってエイリアスまたは単純な関数をシェルプロファイルに追加することです。

mount() {
  command jortstek_mount "$@"
}

関連情報