私はちょうどcentos/7ボックスを使用してVagrantで真新しいCentOS 7 VM(bashバージョン4.2.46)をスピンアップしました、そして私がvagrantユーザーとしてログインしているとき、これは私のパスです:
_/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin
_
Rootとしてログインすると、PATHは次のようになります。
_/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
_
_/etc/profile
_が_/usr/local/sbin:/usr/sbin
_を追加していることを知っています(ほとんどのユーザーの最後に、ルートの最初に)、そしてvagrantホームディレクトリにある_/etc/skel/.bash_profile
_が_/home/vagrant/.local/bin:/home/vagrant/bin
_、しかし初期設定はどこから来るのですか?
現在のところ、ユーザーがPATHで_/usr/local/bin:/usr/bin
_を使用し、rootが他のユーザーを取得する理由についての説明はありません。
(率直に言って、_/usr/local/sbin
_によると、_/usr/sbin
_および_/etc/profile
_が最後にあるはずなので、ルートPATHの順序は非常に奇妙に見えます。)
Bashソースの "config-top.h"には次のようになっています。
/* The default value of the PATH variable. */
#ifndef DEFAULT_PATH_VALUE
#define DEFAULT_PATH_VALUE \
"/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
#endif
/* The value for PATH when invoking `command -p'. This is only used when
the Posix.2 confstr () function, or CS_PATH define are not present. */
#ifndef STANDARD_UTILS_PATH
#define STANDARD_UTILS_PATH \
"/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
#endif
他の人々はCentOSバグ追跡システムで同じことを尋ねました。私が見つけた最も古い投稿は this this でした。
/ usr/local/binは/ bin/bashにハードコードされています。
ご覧のとおり、この問題は2012年5月に最初に報告され、CentOS 6およびCentOS 7に存在しています。
そのため、混乱するかもしれませんが、パスが/ etc/profileからのものではないという分析は正しいようです。パスは/ bin/bashからのものです。
/bin/bash
にハードコードされているようです
strings /bin/bash | grep "\/usr\/local\/bin"
/usr/local/bin:/bin:/usr/bin
これはデフォルトのPATHのようです。
以前の回答に加えて; sshでVM=に到達している場合、これには意味があります。
/etc/ssh/sshd_config
:
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin