su의 루트 경로 설정

su의 루트 경로 설정

(데비안 컴퓨터에서) 루트로 변경하면 suPATH가 올바르게 설정되지 않은 것 같습니다. 일부 중요한 디렉토리가 usr/local/sbin누락되었습니다.

다음 줄이 있습니다 /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"
fi
export PATH

나는 /etc/login.defs(기본 항목도) 다음과 같습니다.

ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

왜 내 PATH가 잘못 설정되어 있나요 su?

답변1

Modern은 환경을 보호하라는 요청을 받을 때 su더 이상 호출자로부터 재설정되지 않습니다 PATH. 이 작업이 필요한 경우 su --login대신 그렇게 하십시오.

에서 /usr/share/doc/util-linux/NEWS.Debian.gz:

- new 'su' (with no args, i.e. when preserving the environment) also
  preserves PATH and IFS, while old su would always reset PATH and IFS
  even in 'preserve environment' mode.
...
The first difference is probably the most user visible one. Doing
plain 'su' is a really bad idea for many reasons, so using 'su -' is
strongly recommended to always get a newly set up environment similar
to a normal login. If you want to restore behaviour more similar to
the previous one you can add 'ALWAYS_SET_PATH yes' in /etc/login.defs.

관련 정보