Ubuntu - rootユーザーは$ PATHで拡張された$ JAVA_HOME変数を見ることができません。

Ubuntu - rootユーザーは$ PATHで拡張された$ JAVA_HOME変数を見ることができません。

$JAVA_HOME「/etc/environment」に変数を作成しました。

JAVA_HOME="/usr/lib/jvm/jdk"
PATH="...bla bla bla:$JAVA_HOME/bin"

また、すべてのユーザーがJavaになじむように/etc/profile編集しました。source /etc/environmentそして、ディレクトリ自体はアクセスのために755に設定されます。

印刷物はroot次のとおりですenv

LANG=C.UTF-8    
SUDO_GID=1000
USERNAME=root
JAVA_HOME=/usr/lib/jvm/jdk
SUDO_COMMAND=/bin/su
USER=root
PWD=/home/ssuser
HOME=/root
SUDO_USER=ssuser
SUDO_UID=1000
MAIL=/var/mail/root
TERM=xterm
SHELL=/bin/bash
SHLVL=2
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin

ssuserただし、-ingなしで同じ操作を実行すると、sudo環境変数は$JAVA_HOME実際のパスに展開されます。

SSH_CONNECTION=193.128.134.115 18497 10.1.4.4 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=C.UTF-8
JAVA_HOME=/usr/lib/jvm/jdk
XDG_SESSION_ID=2
USER=ssuser
PWD=/home/ssuser
HOME=/home/ssuser
SSH_CLIENT=193.128.134.115 18497 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/ssuser
TERM=xterm
SHELL=/bin/bash
SHLVL=1
LOGNAME=ssuser
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk/bin
LESSOPEN=| /usr/bin/lesspipe %s

/etc/sudoersこれはenv_varリセット/保存設定の設定とは関係ありません。もう別のコンピュータで試してみましたが、うまく動作しました。

なぜこれが起こるのか少し混乱しています。また、私が見つけた非常に奇妙なことは、シングルセッション中にsudoユーザーにパスワードを求めるメッセージが表示されないことです。確認してみると、/etc/sudoersパスワードを聞くように正しく設定されていますroot

セッションを閉じてもう一度開いてみました。ルートではなく一般ユーザーとして扱うことができます。また、再起動しても何の変化もありません。

答え1

私の知る限り、シェルスクリプトではない/etc/environmentので、ソースコードを入れる必要はありません。/etc/profile

ペアのみを含める必要がありますkey=value(含まれていません")。 Plusはここのような変数を置き換え/etc/environmentません$JAVA_HOME

/etc/environment起動時にロードされるため、再起動する必要があり、すべてのユーザーが使用できます。

これ引用する以下の場合は、変数拡張が機能しないという説明が具体的に示されています/etc/environment

注:変数の拡張は/ etc / environmentには影響しません。

関連情報