$USERおよび$USERNAME環境変数は誰が設定しますか?

$USERおよび$USERNAME環境変数は誰が設定しますか?

また、この変数は常に現在ログインしているユーザー名(私のDebianシステム)と一致していますか?他のUnix(類似)システムでも使用できると仮定できますか?

whoamiまた、なぜ人々がこれらの変数を読むのではなく使用するのか疑問に思います。

ベストアンサー1

それログイン

Linuxログイン(1)マニュアルページには次のように記載されています。

の価値$HOME$user$シェル$パス$ログ名$mailパスワード入力の該当するフィールドに従って設定します。

FreeBSDログイン(1)マニュアルページには次のように記載されています。

これログインユーティリティは環境に情報を入力します(参照: 環境(7))ユーザーのホームディレクトリ(HOME)、コマンドソルバー(SHELL)、検索パス(PATH)、端末タイプ(TERM)、およびユーザー名(LOGNAMEとUSER)を指定します。

これネットワークBSDオープンBSDそしてオペレーティングシステムマニュアルページにも同じ内容が記載されています。

これはソースコードutil-linuxでログインします。

setenv("HOME", pwd->pw_dir, 0); /* legal to override */
setenv("USER", pwd->pw_name, 1);
setenv("SHELL", pwd->pw_shell, 1);
/* ... */
setenv("LOGNAME", pwd->pw_name, 1);

これはソースコードFreeBSDからログイン:

(void)setenv("LOGNAME", username, 1);
(void)setenv("USER", username, 1);
(void)setenv("PATH", rootlogin ? _PATH_STDPATH : _PATH_DEFPATH, 0);

おすすめ記事