데비안의 모든 사용자에 대해 로그인하지 않은 쉘에 대한 시스템 $PATH 경로를 추가하는 방법

데비안의 모든 사용자에 대해 로그인하지 않은 쉘에 대한 시스템 $PATH 경로를 추가하는 방법

일부 프로그램을 설치한 후 모든 사용자를 위한 비로그인 쉘을 시스템에 /opt/xxx/bin추가하고 싶습니다 . 어떻게 해야 합니까?/opt/xxx/bin$PATH

답변1

PAM을 사용하는 Debian 및 기타 시스템에서는(대부분 현재) 이 작업 PATH/etc/environment.pam_env모듈( auth섹션 또는 섹션 session); 데비안에서는 모두 있어야 합니다(적어도 로그인하고 명령을 실행하는 방법을 제공하는 것).

답변2

/etc/profileJoe 가 말한 것처럼 기본 경로를 설정할 수 있지만 $HOME/.profile../configure --prefix=/opt/<name>/opt/opt/<name>/bin

OPTDIR=/opt

for i in $OPTDIR/* ; do
    BINDIR=$i/bin
    if [ -d $BINDIR ] ; then
        if [ -z $PATH ] ; then
            PATH=$BINDIR
        else
            PATH=$BINDIR:$PATH
        fi
    fi
done

export PATH

나에게는 $HOME/.profile당신의 경우에는 그렇습니다 /etc/profile. 이제는 /opt앞으로 아래 패키지를 설치 하더라도 /opt/.*/bin.$PATH

추가 기능은 안정적일 필요가 없기 $HOME/.profile때문에 /etc/profile.


작은 참고 사항: /etc/.profilereverse는 $HOME/profile기본 셸에서 실행되지 않지만 dash경량 변형은 bash시작 프로세스의 부하를 줄여줍니다.

답변3

serverfault에서 가장 좋은 답변을 찾았습니다.자일스:

데비안의 모든 사용자에 대해 PATH를 설정하는 방법은 무엇입니까?

PATH를 설정하는 첫 번째 장소는 /etc/login.defs루트에 대한 설정과 다른 모든 사람에 대한 설정입니다.

환경 변수를 정의할 수 있는 또 다른 위치는 입니다 /etc/environment. 이러한 설정은 모든 사람에게 적용됩니다(임의의 쉘 코드를 작성할 수는 없습니다).

환경 변수를 정의할 수 있는 세 번째 장소는 /etc/profile임의의 셸 코드를 작성할 수 있는 곳입니다. 사용자별 설정을 원하는 경우 해당 사용자별 파일을 사용할 수 있습니다 ~www-data/.profile. 그러나 이는 콘솔 대화형 로그인에만 작동합니다. 특히 명시적으로 소스가 제공되지 않는 한 cron 작업에는 작동하지 않습니다 /etc/profile.

사용자의 crontab에서만 이 설정이 필요한 경우 PATHcrontab의 시작 부분에 쓸 수 있습니다. 전체 목록( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin)이 필요하며 변수 대체를 사용할 수 없습니다( PATH=$PATH:/usr/local/zend/bin여기에서는 작동하지 않음).

답변4

기본 경로는 /etc/profile에서 설정할 수 있습니다.

하지만 방금 Ubuntu 시스템을 살펴보니 /etc/environment에 설정되어 있습니다.

관련 정보