/etc/profile
전역 환경 변수를 설정하는 파일이 있다는 것을 알고 있습니다 /etc/bashrc
. 아마도 그 목적을 오해했을 수도 있지만...
글로벌 bash_profile
파일이 있나요?
나는 Mac OS X를 사용하고 있습니다.
답변1
이는 호출되지 않지만 bash_profile
전역 bash 구성을 위한 표준 위치입니다 /etc/bash.bashrc
. /etc/profile
이는 일반적으로 쉘이 bash인 경우 호출됩니다. 예를 들어 내 파일에는 /etc/profile
다음이 있습니다.
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
사용법 측면에서 /etc/profile
모든 Bourne 호환 셸(sh, bash, ksh 등)에 대해 시스템 전체 구성이 제공됩니다. /etc/bash_profile
구성 파일의 목적은 로그인 셸의 동작을 제어하는 것이므로 일반적으로 동등한 파일이 필요하지 않습니다 . 일반적으로 bash와 관련된 작업은 수행하고 싶지 않습니다. /etc/bash.bashrc
bash에 특정하며 로그인 쉘과 비로그인 쉘 모두에 대해 실행됩니다.
설상가상으로 OS X에는 그런 기능도 없는 것 같습니다 /etc/bash.bashrc
. 이는 OS X의 터미널과 관련이 있을 수 있습니다.기본적으로 로그인 쉘로 실행됩니다., 따라서 차이점이 사라집니다.
터미널 창 지침에 대한 한 가지 예외는 Mac OS X의 Terminal.app입니다. 이 앱은 기본적으로 각각의 새 터미널 창에 대해 로그인 셸을 실행하여 .bashrc 대신 .bash_profile을 호출합니다. 다른 GUI 터미널 에뮬레이터도 동일한 작업을 수행할 수 있지만 대부분은 그렇지 않습니다.
나는 OS X를 실행하지 않기 때문에 내 지식의 범위는 OS X로 제한됩니다.
답변2
/etc/profile
그것은 글로벌합니다 bash_profile
. bash 전용 파일은 없습니다. bash는 모든 Bourne 스타일 쉘이 읽는 표준 파일만 읽습니다. 여기에서 시스템 전체의 환경 변수를 설정할 수 있습니다.
바라보다모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?일반적인 bash 시작 파일에 대한 일반적인 개요입니다.
답변3
대화형 셸(Bash)에 대한 전역 설정
이는 로드되지 않으므로 /etc/profile
아무것도 /etc/profile.d/
로드되지 않습니다(로그인 셸과 달리 끝 참조).
-DSYS_BASHRC=
전역 파일은 /etc/bashrc 또는 /etc/bash.bashrc입니다( 컴파일 시 설정된 플래그 에 따라 다름 ).
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
충돌을 피하기 위해 일반적으로 이 파일을 있는 그대로(가능한 한 많이) 두는 것이 가장 좋습니다. 내가 사용하는 전략은 로그인(/etc/profile) 셸에서 사용하는 전략과 유사합니다.
내 전략은 위 파일에 로더를 추가하는 것입니다.
# Add new directory analog to /etc/profile.d
mkdir /etc/bashrc.d
# Write the loader to /etc/bash.bashrc (it might be /etc/bashrc on as mentioned above)
cat >> /etc/bash.bashrc << 'EOF'
# I appended this: Load scripts from /etc/bashrc.d
if test -d /etc/bashrc.d; then
for script in /etc/bashrc.d/*.sh; do
test -r "$script" && . "$script"
done
unset item
fi
EOF
이제 새 .sh 파일을 /etc/bashrc.d 디렉터리에 배치하여 전역 대화형(bash) 셸 파일에 n개의 사용자 정의를 쉽게 추가할 수 있습니다.
전역적으로 Grep 색상 지정
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
다음 줄을 사용하여 이 작업을 수행할 수 있습니다.
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
profile.d와 bashrc.d 비교
이 글을 읽은 후에도 여전히 확신이 들지 않는다면 다음을 수행하여 스스로 확신해 보세요.
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
새 터미널 에뮬레이터를 열고 grep을 사용하여 사용자 디렉터리에서 "the"와 같은 몇 가지 일반적인 단어를 검색합니다.
grep -r 'the'
어떤 것도 색깔이 있어서는 안 됩니다. CTRLALTF1을 수행하여 가상 콘솔에서 동일한 작업을 수행합니다(X 서버가 아마도 CTRLALTF7에서 실행 중이므로 다시 전환할 수 있다는 점을 기억하십시오. 예를 들어 잊어버린 경우 Desktop Manager를 다시 시작하십시오).
grep -r 'the'
원하는 색상의 결과를 얻을 수 있습니다.
어떤 것도 색깔이 있어서는 안 됩니다. 가상 콘솔에서도 동일한 작업을 수행합니다 CTRLALTF1. 다시 전환할 수 있도록 X 서버가 실행 중일 수 있다는 점을 기억하세요 CTRLALTF7. 예를 들어 잊어버린 경우 Desktop Manager를 다시 시작하면 됩니다.
grep -r 'the'
원하는 색상의 결과를 얻을 수 있습니다.
CTRLALTF1로그인 쉘은 컴퓨터를 시작하거나 가상 콘솔을 통해 가상 콘솔을 전환할 때 얻게 되는 것입니다 FNth.
/etc/profile
파일이 로드될 때 로그인 쉘이 로드됩니다 /etc/profile.d/*.sh
.
답변4
또는 "export" 키워드를 사용하여 로컬 .bashrc 파일에 변수를 설정할 수 있습니다. 예를 들면 다음과 같습니다. import HI='Hello_World'