私は新しいDebian Busterをインストールしました:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
$ cat /etc/profile
[..]
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
[...]
$ whoami
zozo
$ su
Password:
# id -u
0
# printenv | grep -i ^path
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
ルートとして実行する場合:
# grep -i path /etc/profile.d/*
出力なし# grep -i path ~/.profile
出力なし# grep -i path ~/.bashrc
出力なし
Debian システムでは、~/.bash_profile
両方~/.bash_login
vi ~/.profile
PATH="/usr/bin:/bin:/usr/sbin:/sbin"
しかし、問題はまだ存在します。
Ctrl+D一般ユーザーに戻る
それから
$ su
password:
# printenv | grep -i ^path
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
だからいくつかの検索をしてみました。6.2 Bash 起動ファイル
それから
if [ -z "$PS1" ];then echo NOT interactive shell ;else echo INteractive shell ;fi
INteractive shell
それは言う:
Bashがインタラクティブなログインシェルとして呼び出されると、[...]まず[...] /etc/profile [...]を読み、実行します。 [...] 次に[...]~/.profile...を探します。
PATH
だから、なぜロードされないのか(呼び出し/ロード~/.profile
しない)と思います。~/.profile
もちろんに入れると~/.bashrc
動作します。
したがって、最後に、デフォルトではシャットダウンや再起動などの基本コマンドへのパスはありません。
systemctl
また、このようなツールは本質的に管理コマンドであり、/usr/bin
or /sbin
(/usr/sbin
そして他の多くの管理コマンド、例えばgetfacl
...setfacl
しかしそれは別の質問です)であることを知っています。
ここに何かが欠けている必要があります。
答え1
ログインシェルのみ/etc/profile
とを読むことができます~/.profile
。
に電話すると確認できますecho $0
。
出力がマイナス記号(たとえば-bosh
)で始まる場合、これはログインシェルです。
したがって、変更後にログアウトして再度ログインすることをお勧めします。/etc/profile
/etc/sh.shrc
、/etc/bash.bashrc
または$ HOMEの対応するファイルは、次のように提供されます。どの単純なログインシェルではなく、対話型シェルです。
あなたのシェルはログインシェルではないので、なぜこれが起こるのかを理解しようとする必要があります。テキストコンソールでログインし、シェルがssh
ログインシェルとして表示されていない場合は、ディストリビューションに関するバグレポートを作成する必要があります。
正しいX11環境は、新しく作成されたシェルウィンドウから始まるargv[0]
すべてのシェルを起動するため、-
これらのシェルは自分自身をログインシェルとして識別します。これが発生しないと、X11環境が損傷する可能性があります。
としてスーパーユーザーセッションを開始すると、su
ログインシェルは起動しません。これらのシェルがログインシェルのように機能するようにするには、次のように呼び出します。
su -
試してみましたか?