운영 체제: 데비안 10.10
"su -"로 부팅할 때 "usermod" 명령이 실행되는 이유를 이해하려고 검색했는데 "su 루트"에서 부팅하면 명령이 "bash: usermod: command notfound"입니다.
감사해요!
답변1
su
이 명령은 기존 환경을 유지하지 않으며 -
모든 환경 변수를 로드하지 않고 사용자로 전환만 합니다.
su -
사용자 로그인을 시뮬레이션하고 해당 사용자로 전환할 뿐만 아니라 해당 사용자의 환경 변수도 로드합니다.
~에서man su
-, -l, --login Start the shell as a login shell with an environment similar to a real login: o clears all the environment variables except TERM and variables specified by --whitelist-environment o initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH o changes to the target user's home directory o sets argv[0] of the shell to '-' in order to make the shell a login shell
이 경우 루트 사용자의 PATH 변수에 있는 모든 요소를 로드하지 못할 수도 있습니다.
echo $PATH
실행 후 입력하십시오 . su root
명령을 실행한 후 su -
PATH에 추가 폴더가 표시될 수 있습니다 su -
.
usermod
명령은 에 위치해야 합니다 /usr/sbin
. 이는 슈퍼유저만 사용할 수 있는 경로입니다. 내부 명령은 관리 목적으로 일반 사용자가 아닌 관리 사용자만 실행할 수 있습니다 /sbin
./usr/sbin
type usermod
또는 를 사용하여 경로에 있는지 which usermod
확인할 수 있습니다 . after의 출력에서는 볼 수 없지만 명령 뒤의 PATH 변수에 배치됩니다.usermod
/usr/sbin/usermod
/usr/sbin
echo $PATH
su root
su -
/sbin /bin과 마찬가지로 이 디렉토리에는 시스템을 부팅하는 데 필요한 명령이 포함되어 있지만 일반 사용자는 일반적으로 실행하지 않습니다.
/usr/sbin 이 디렉토리에는 부팅 프로세스, /usr 마운트 또는 시스템 복구에 필요하지 않은 시스템 관리에 사용되는 프로그램 바이너리가 포함되어 있습니다.
답변2
를 실행하면 su -
루트 사용자 환경을 사용하여 셸을 시작합니다. 이 질문에 대한 환경에서 중요한 부분은 루트 사용자의 PATH를 얻는 것입니다. 종료 -
하고 을 실행 하면 su root
사용자 환경과 더 중요한 것은 사용자의 PATH가 보존됩니다.