"sudo -i"로 시작된 쉘의 경우 어떤 쉘 구성 파일을 읽습니까?

"sudo -i"로 시작된 쉘의 경우 어떤 쉘 구성 파일을 읽습니까?

man sudo sudo -i시작 로그인 셸 에 따르면 내 이해로는 read/source ~/.profile즉, /root/profile또는 [non-root user home/.profile및 이어야 합니다 /etc/profile. 별칭을 추가해도(예: alias ll='ls -la'두 파일에 별칭 추가) 에서 시작한 셸에서는 해당 별칭을 사용할 수 없습니다 sudo -i. bash쉘에서 실행 하면 sudo -i별칭이 작동합니다.

나는 별칭을 넣는 것을 알아 냈습니다 /etc/profile.d/00-aliases.sh.https://askubuntu.com/questions/810730/how-to-share-bash-aliases- Between-non-root-user-bash-and-shell-opened-by-sudo. 여기서는 예상되는 동작이 발생하지 않는 이유를 알고 싶습니다.

나는 이것을 다음과 같이 보고한다.launchpad.net의 sudo 오류, 그러나 지금은 이것이 예상되는 동작의 까다로운 측면인지 확실하지 않습니다. man sudo그것을 설명하는 방법은 너무 -i사소합니다 .

답변1

읽는 파일은 대상 사용자의 쉘에 따라 다릅니다. 예를 들어 sudo -u user1 -iuser1과 함께 사용 csh하면 ~user1/.login. ksh 사용자의 경우 ~user1/.profile.

bash사용자(예 : ) 의 경우 root읽고 있는 파일이 ~/.bash_profile존재하는지 여부 및 대체 파일~/.profile

예를 들어

% sudo head -1 /root/.bash_profile /root/.profile 
==> /root/.bash_profile <==
echo RUNNING BASH_PROFILE

==> /root/.profile <==
echo RUNNING PROFILE

% sudo -i
RUNNING BASH_PROFILE
root@server:~# rm /root/.bash_profile
root@server:~# exit
logout

% sudo -i
RUNNING PROFILE
root@server:~# 

.bash_profile그래서 우리는 차단이 .profile있음을 알 수 있습니다. 이는 bashssh를 통해 로그인하든 sudo -i.

관련 정보