解決済みのようですが、情報共有します。
まず、sudo -iとsu -で読み込まれるプロファイルおよび順序は同じ
です。また、最初に読み込まれるのは/etc/profileです。
・/usr/local/binについて
bashのマニュアルには明記されていませんので、推測になります
がbash起動時かそれ以前で設定していると思われます。
sudo -i時の場合、/etc/profileを読み込む前に/etc/sudoersに
設定されたルールに従って、環境変数が大きく更新されます。
下記は/etc/sudoersの抜粋です。
sudoers
1Defaults env_reset
2Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
3Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
4Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
5Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
6Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
7
8Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
sudoのマニュアルにも記載されているとおり、設定済みの環境変数
は一部(※)を除いて、クリアされます。
その後、secure_pathに指定されているPATHが追加されます。
(/etc/profileの先頭でPATHを確認してください)
sudo -i側に/usr/local/binが無いのはsecure_pathに指定していない
からです。
(※)一部引き継がれる環境変数というのは、上記のenv_keep行が該当します。
・/usr/lib64/qt-3.3/binについて
sudo -i時に読み込まれる/etc/sudoersの制御による差異です。
/etc/sudoersの抜粋を再掲します。
sudoers
1Defaults env_reset
2Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
3Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
4Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
5Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
6Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
上記でQTDIRに着目してください。
/etc/profile内で/etc/profile.d/qt.shを読み込みます。
qt.shの内容は下記のとおりです。
qt.sh
1if [ -z "${QTDIR}" ]; then
2
3 case `uname -m` in
4 x86_64 | ia64 | s390x | ppc64 )
5 QT_PREFIXES="/usr/lib64/qt-3.3 /usr/lib/qt-3.3" ;;
6 * )
7 QT_PREFIXES="/usr/lib/qt-3.3 /usr/lib64/qt-3.3" ;;
8 esac
9
10 for QTDIR in ${QT_PREFIXES} ; do
11 test -d "${QTDIR}" && break
12 done
13 unset QT_PREFIXES
14
15 if ! echo ${PATH} | /bin/grep -q $QTDIR/bin ; then
16 PATH=$QTDIR/bin:${PATH}
17 fi
18
19 QTINC="$QTDIR/include"
20 QTLIB="$QTDIR/lib"
21
22 export QTDIR QTINC QTLIB PATH
23
24fi
上記のとおり、QTDIRに値が設定されている場合は、PATHに
/usr/lib64/qt-3.3/binが設定されないロジックになっています。
以上です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/03/12 18:21