루트가 될 때 소스 사용자 구성

루트가 될 때 소스 사용자 구성

내 기본 사용자 계정이 zsh기본 쉘로 설정되어 있습니다. .zshrc파일에서 일부 구성을 수행했는데 모든 것이 정상입니다 .

그러나 일단 rootrun 을 통과 하면 아무런 구성도 없이 인스턴스 sudo -s가 생성됩니다 zsh. 이제 별칭 등을 복원하기 위해 실행할 수 있지만 source ~/.zshrc이를 기본값으로 사용하고 싶습니다. 등도 .vimrc마찬가지다 .

어떻게 해야 하나요?

이 시스템에 나만 있는 것이 아니기 때문에 이동 .zshrc및 기타 구성이 /root/불가능합니다 .sudoer

답변1

sudo 구성에 따라 HOME환경 변수가 홈 디렉터리를 가리키도록 유지하거나 대상 사용자의 홈 디렉터리를 가리키도록 할 수 있습니다. 이는 실행 여부에 따라 sudo -s달라질 수 있습니다(다시 sudo 구성에 따라 다름).sudo zsh

항상 홈 디렉토리를 유지하려면 다음을 사용할 수 있습니다.

sudo --preserve-env=HOME

sudo의 구성이 허용하는 경우 또는

sudo env HOME="$HOME" zsh

이것은 항상 가능합니다.

별칭이나 함수로 만들고 싶을 수도 있습니다.

alias sudo='sudo --preserve-env=HOME'

또는

function sudo {
  if [ $# -eq 0 ]; then
    set env HOME="$HOME" zsh
  fi
  sudo "$@"
}

일부 응용 프로그램은 상태 파일을 홈 디렉터리에 저장하므로 .viminfo.zsh_history. 소수의 프로그램에만 문제가 있는 경우 다른 상태 파일을 사용하도록 구성하십시오. 예를 들어, 내 것 .vimrc:

" Disable viminfo if running as root
if has("unix")
  if system("id -u") == 0
    set viminfo=
  endif
endif

그리고 (더 복잡한 버전) 내 경우는 다음과 같습니다 .zshrc.

if [[ $UID -eq 0 ]]; then
  HISTFILE="${HISTFILE%_history}_root_history"
fi

관련 정보