데비안 대화형 쉘은 .profile을 호출하지 않습니다.

데비안 대화형 쉘은 .profile을 호출하지 않습니다.

방금 새로운 Debian Buster를 설치했습니다:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:    10
Codename:   buster
$ cat /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:/usr/local/games:/usr/games"
fi
export PATH

[...]
$ whoami 
zozo
$ su 
Password:
# id -u 
0
# printenv | grep -i ^path 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

루트로 실행하는 경우:

  • # grep -i path /etc/profile.d/* 출력 없음
  • # grep -i path ~/.profile 출력 없음
  • # grep -i path ~/.bashrc 출력 없음

데비안 시스템에서는 ~/.bash_profile둘 다~/.bash_login

vi ~/.profile 
PATH="/usr/bin:/bin:/usr/sbin:/sbin"

하지만 문제는 여전히 존재합니다.

Ctrl+ D일반 사용자로 돌아가기

그 다음에

$ su 
password: 

# printenv | grep -i ^path
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

그래서 몇 가지 검색을 해봤습니다.6.2 Bash 시작 파일

그 다음에

if [ -z "$PS1" ];then echo NOT interactive shell ;else echo INteractive shell ;fi
INteractive shell

그것은 말한다:

Bash가 대화형 로그인 셸로 호출되면 [...] 먼저 [...] /etc/profile [...]을 읽고 실행합니다. [...] 다음에 [...] ~/.profile ...을 찾습니다.

PATH그래서 왜 로드되지 않는지 ( 호출/로드 ~/.profile하지 않음 ) 궁금합니다 . ~/.profile물론 에 넣으면 ~/.bashrc작동합니다.

따라서 마지막으로 기본적으로 종료 또는 재부팅과 같은 기본 명령에 대한 경로가 없습니다.

systemctl또한 와 같은 도구 는 본질적으로 관리 명령 /usr/bin이지 /sbinor /usr/sbin (그리고 다른 많은 관리 명령, 예를 들어 getfacl... setfacl하지만 그것은 또 다른 질문입니다) 이라는 것을 알고 있습니다 .

여기에 뭔가가 빠져 있어야합니다.

답변1

로그인 쉘만 /etc/profile및 를 읽을 수 있습니다 ~/.profile.

에 전화하시면 확인하실 수 있습니다 echo $0.

출력이 빼기 기호(예 -bosh: )로 시작하는 경우 이는 로그인 쉘입니다.

따라서 변경 후 로그아웃했다가 다시 로그인하는 것이 좋습니다./etc/profile

/etc/sh.shrc, /etc/bash.bashrc또는 $HOME의 해당 파일은 다음과 같이 제공됩니다.어느단순한 로그인 셸이 아닌 대화형 셸입니다.

귀하의 쉘은 로그인 쉘이 아니기 때문에 왜 이런 일이 발생하는지 알아내려고 노력해야 합니다. 텍스트 콘솔을 통해 로그인 ssh하고 쉘이 로그인 쉘로 표시되지 않은 경우 배포판과 관련된 버그 보고서를 작성해야 합니다.

올바른 X11 환경은 새로 생성된 쉘 창에서 argv[0]시작하는 모든 쉘을 시작하므로 -이러한 쉘은 자신을 로그인 쉘로 식별합니다. 이런 일이 발생하지 않으면 X11 환경이 손상될 수 있습니다.

로 수퍼유저 세션을 시작하면 su로그인 쉘이 시작되지 않습니다 . 이러한 쉘이 로그인 쉘처럼 작동하도록 하려면 다음을 호출하십시오.

su -

시도해 보셨나요?

관련 정보