PATH 変数が破損する可能性はありますか?

PATH 変数が破損する可能性はありますか?

Ruby のバージョン管理プログラムである rbenv をインストールしました。.bashrc ファイルを確認すると、パス変数が以下のように変更されていることに気付きました。

export PATH="$HOME/.rbenv/bin:$PATH"

「:$PATH」部分は、古いパスの内容を含めるために含まれていたと思います。パス変数を変更するプログラムに「:$PATH」部分が含まれていない場合、何が起こるのかを知りたいです。プログラムが存在する bin ディレクトリが新しいパス変数に含まれなくなったため、コマンド ラインから一部のプログラムを実行できなくなるのでしょうか。

答え1

正解です。したがって、サードパーティのパッケージは現在のパスを拡張するだけで、制限してはいけません。

答え2

PATHは、シェル ( bash、、、など) が実行するものを見つけるために使用する、コロンで区切られたディレクトリのリストです。シェルに入力した行の最初の単語がシェルの組み込みまたはエイリアスでない場合、シェルは 内のディレクトリのリストを順に調べ、入力したコマンドの最初の単語と同じ名前の実行可能ファイルを探します。 fishkshsh$PATH

command not found一般的なコマンド ( da/media/w3/0123-4567/PODCASTS/2016-Nov-27/loe-wildlife-decline.mp3te、、ls...) のエラーは、不正な形式の を示していますPATH。 緊急PATH(問題を修正するのに十分な) は、 で設定できますexport PATH=/usr/bin:/bin:/usr/local/bin:/snap/bin

多くのPATHエラーは、シェルの構文エラーです (Spaceの前または後に が=ありPATH=value、スペースがありません)。

「パスの破損」に関しては、 の「特別な」バージョンを作成しls、 に格納した場合/.evil/bin/ls、パスを破損して、/.evil/bin 前に /binと入力すると、の代わりにlsシェルが実行されます。これはよく知られた落とし穴ですが、これが役に立つ頃にはシステムは完全に侵入されています。/.evil/bin/ls/bin/ls

答え3

これらを実行するには、フルパスを指定するだけです。変更しても、PATH関連付けられている権限は変更されません。

関連情報