/etc/profile은 사용자에게 제공되지 않습니다.

/etc/profile은 사용자에게 제공되지 않습니다.

제가 실행 중인 우분투 서버에서는 사용자에게 유용한 별칭과 기능을 추가하기 위해 파일 /etc/bash.bashrc로 사용자 정의를 추가했습니다 . 이 모든 것이 내 계정에서 올바르게 작동합니다..sh/etc/profile.d

su그러나 또는 를 통해 다른 계정(내 계정과 동일한 그룹에 속한 계정 포함)에 로그인하면 ssh이러한 사용자 정의가 로드되지 않습니다. 수동으로 실행하면 . /etc/profile문제가 해결되지만, 내가 아는 한 대화형 로그인 셸이 시작되면 자동으로 이 작업이 수행되어야 합니다. echo $0모든 계정에서 실행하면 this 가 반환 -bash되므로 실제로는 이와 같은 셸에 있다고 가정합니다.

그렇지 않으면 왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?

답변1

나도 같은 문제가 있습니다. 파일을 확인 /etc/profile하다가 해결책을 찾았습니다

...
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

그래서 우리는 단지 확인할 수 있습니다.쉿파일(Ubuntu 18). 이름을 바꿨 /etc/profile.d/conda더니 /etc/profile.d/conda.sh이제 예상대로 작동합니다!

답변2

~/.profile무엇이든 ~/.bashrc실행됩니다.뒤쪽에 /etc/profile그리고 /bash.bashrc. 따라서 첫 번째에 설정된 별칭이나 변수가 동일한 이름을 공유하는 경우 후자에 설정된 별칭이나 변수를 대체합니다.

도움을 주실 수 있는 분들을 위해: 제가 직면하고 있는 구체적인 문제는 서버를 마이그레이션하면서 사용자들에게 중요한 파일을 백업하고 새 서버에 다시 보관하도록 요청했기 때문입니다. 그들이 이 작업을 수행했을 때 ~/.bashrc"파이썬을 작동시키는 트릭"(즉, 디렉토리 를 포함하도록 PATH 변수를 설정하는 방법 anaconda)과 이전 서버 사용자 정의에서 내가 그들의 컴퓨터에서 수행한 작업이 있었기 때문에 이를 포함시켰습니다 . 이는 내가 설정한 새 별칭(예: alias source activate, been )과 conda activate충돌하며 conda 4.4부터는 수동으로 설정하는 대신 PATH 변수 conda.sh에 추가해야 합니다 ./etc/profiles.d/

관련 정보