답변:
호출되지는 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를 실행하지 않으므로 지식의 범위가 끝납니다.
/etc/profile
우분투 12.04 의 기본값 입니다. /etc/profile
bash에서만 실행되고 다른 sh 호환 쉘이없는 것을 원한다면 어떻게 제안 하시겠습니까?
/etc/profile
내 시스템 의 시스템 파일에는 맨 위에 다음과 같은 주석이 포함되어 있습니다 # System-wide .profile for sh(1)
. 이 의미 하는가 profile
IS의 sh
특정은? sh
어떻게 든 전에 실행 됩니까 bash
?
sh
의 하위 집합입니다 bash
. /etc/profile
에 대해 실행되고 sh
, bash
다른 모든 Bourne의 호환 포탄입니다.
/etc/bashrc
아닌 mac에서 호출 된 것 같습니다 /etc/bash.bashrc
. 또한 실행되는 /bin/sh
것처럼 보입니다 .
/etc/profile
글로벌 bash_profile
입니다. bash 전용 파일은 없으며 bash는 모든 Bourne 스타일 쉘에서 읽은 표준 파일을 읽습니다. 여기서 시스템 전체 환경 변수를 설정할 수 있습니다.
모든 쉘에서 읽은 ".bashrc"파일이 있습니까?를 참조하십시오 . bash의 공통 시작 파일에 대한 일반적인 개요.
이것은로드되지 않으므로 로그인 쉘과 달리로드되는 /etc/profile
것이 없습니다 /etc/profile.d/
(끝을 참조하십시오).
이 파일의 전역 파일은 / etc / bashrc 또는 /etc/bash.bashrc입니다 ( -DSYS_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
이제 새 .shfile을 /etc/bashrc.d 디렉토리에 넣어 전역 대화식 (bash) 셸 파일에 n 사용자 정의를 쉽게 추가 할 수 있습니다.
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
이 하나의 라이너 로이 작업을 수행 할 수 있습니다.
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
이 내용을 읽은 후에도 확신이없는 경우 자신을 확신시키기 위해 이렇게하십시오.
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
새로운 터미널 에뮬레이터를 열고 grep을 사용하여 "the"와 같은 사용자 디렉토리에서 일반적인 단어를 검색하십시오.
grep -r 'the'
색이 없어야합니다. CTRLALTF1을 수행하여 가상 콘솔에서 동일한 작업을 수행하십시오 (X 서버가 CTRLALTF7에서 실행 중일 수 있으므로 다시 전환 할 수 있습니다. 잊어 버린 경우 예를 들어 데스크탑 관리자를 다시 시작하십시오).
grep -r 'the'
원하는 색상 결과를 얻을 수 있습니다.
색이 없어야합니다. 가상 콘솔에서 동일한 작업을 수행합니다 CTRLALTF1(예 : X 서버가 실행 중인지 CTRLALTF7다시 전환 할 수 있음을 기억하십시오 . 잊어 버린 경우 데스크톱 관리자를 다시 시작하십시오).
grep -r 'the'
원하는 색상 결과를 얻을 수 있습니다.
로그인 쉘은 머신을 부팅하거나 가상 콘솔을 CTRLALTF1통해 FNth가상 콘솔 을 전환 할 때 얻는 것입니다 .
파일을 로드 /etc/profile
하는 동안 로그인 셸이로드 됩니다 /etc/profile.d/*.sh
.
/etc/bash.bashrc
비 대화식 쉘에서 읽지 마십시오 ./etc/profile
비 대화식 쉘에서 읽을 수 있습니다. 로그인 쉘과 비 로그인 쉘의 차이점을