프라이빗 대 글로벌

프라이빗 대 글로벌

몇 가지 특별한 별칭이 있고 이를 일부 서버(CentOS 7, bash 쉘)에 설정했습니다.

그 중 일부는 서버별로 관련되어 있으며(예: IP가 인터넷을 가리키는지, 서버의 호스트 이름 등) 다른 것들은 모든 것과 관련되어 있습니다(명령 별칭 등).

~/.bash_profile고유하지 않은 모든 환경 변수를 포함하는 Git을 통해 전파되는 또 다른 파일을 제공하는 파일에 각 서버에 대한 고유한 별칭을 설정했습니다 . 이렇게 하면 별칭이나 변수를 추가하고 모든 서버에서 이를 추가하기를 원할 때마다 이를 파일에 추가하고 Git을 통해 푸시할 수 있습니다.

~/.bash_profile그러나 일부 (드물게 보이는) 경우에는 로그인 후 수동으로 가져온 후에 만 고유하지 않은 별칭과 변수를 사용할 수 있다는 것을 알게 되었습니다 . 대부분의 경우 있는 그대로 잘 작동합니다. 로그인하면 모든 것이 설정되고 다른 소스가 필요한 경우도 있습니다.

/etc/profile.d/, 및 의 스크립트를 사용하여 다른 위치에서 고유하지 않은 파일을 가져오려고 시도했는데 /etc/bashrc, 이로 인해 로그인이 중단되는 루프가 발생했습니다./etc/profile~/.bash_rc

bash_profile은 다음과 같습니다:

# .bash_profile
source "/etc/non_uniques_file"

#Unique to this server
alias servername=[name of server]...

고유하지 않은 파일은 다음과 같습니다.

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export HISTTIMEFORMAT="%d/%m/%y %T "
export HISTSIZE=2000
export HISTFILESIZE=20000...

내 질문은 - 모든 경우에 고유한 파일을 가져와 시스템 전체에 설정할 수 있는 올바른 위치는 어디입니까?

로그인 방법은 동일하지만 일부 로그인에서는 이러한 변수가 설정되고 다른 로그인에서는 설정되지 않습니다. 이유는 무엇입니까?

감사해요!

답변1

프라이빗 대 글로벌

다음 에 저장된 모든 .profile또는 .rc파일(예: 등).bashrc메인 디렉토리등록된 모든 사용자의 권리는 명시적으로 해당 사용자에게 속합니다.

이는 다른 사용자가 구매하기에 적합하지 않음을 의미합니다. (즉, 전 세계적으로).

전역 변수

이는 일반적으로 대체 파일입니다. 사용자가 로그인하기 전에 로드되므로 새 사용자 등에 대한 기본 기본 대체 역할을 합니다.

실제로 분포에 따라 위치가 다를 수 있습니다. 유사한 위치는 /etc/default검색을 시작하기에 좋은 장소입니다.

Linux의 무료 오픈 소스 특성으로 인해 배포판에 대한 보다 정확한 정보를 보려면 설명서를 확인해야 합니다.

답변2

프로필이나 가져온 파일을 업데이트하기 전에 로그인한 경우 다시 가져오지 않습니다. man bash다양한 시나리오(대화형 쉘, 로그인 쉘 등)에서 어떤 파일을 읽는지 설명하는 bash 매뉴얼의 INVOCATION 섹션( )을 확인해야 합니다 .

또한 별칭을 특이한 방식으로 사용하고 있습니다. 별칭에 대해서는 잊어버리고 변수를 설정하고 내보내야 한다고 생각합니다.

나는 두 가지 옵션이 있다고 생각합니다.

  1. 아무것도 얻지 말고 실행하려는 두 파일을 /etc/profile.d에 넣으세요. 이름을 appname_global_vars 및 appname_node_vars로 지정하겠습니다.

  2. /etc/profile.d 외부에서 읽을 수 있는 위치에 두십시오(이미 /home/bin이 있으므로 거기에 두는 것이 어떻겠습니까?

관련 정보