글로벌 bash_profile


20

전역 환경 변수를 설정하기위한 파일 /etc/profile/etc/bashrc파일 이 있다는 것을 알고 아마도 그 목적을 오해하고 있지만 ...

글로벌 bash_profile파일이 있습니까?

Mac OS X을 사용하고 있습니다

답변:


15

호출되지는 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.bashrcbash 전용이며, 로그인 및 비 로그인 쉘 모두에 대해 실행됩니다.

더 복잡하게 만들기 위해 OS X에는조차없는 것처럼 보입니다 /etc/bash.bashrc. 이것은 아마도 OS X의 터미널이 기본적으로 로그인 쉘로 실행 된다는 사실과 관련이 있으므로 구별이 손실됩니다.

터미널 윈도우 지침에 대한 예외는 Mac OS X의 Terminal.app입니다.이 터미널은 각각의 새 터미널 윈도우에 대해 기본적으로 로그인 쉘을 실행하여 .bashrc 대신 .bash_profile을 호출합니다. 다른 GUI 터미널 에뮬레이터도 동일하지만 대부분 그렇지 않습니다.

OS X를 실행하지 않으므로 지식의 범위가 끝납니다.


/etc/bash.bashrc비 대화식 쉘에서 읽지 마십시오 . /etc/profile비 대화식 쉘에서 읽을 수 있습니다. 로그인 쉘과 비 로그인 쉘의 차이점을
Gilles 'SO- 악마 그만'

@Gilles-여기에서 어떤 점을 만들려고했는지 모르겠습니다. 비 대화식 로그인 쉘은 실제로 드문 일입니다. 참고로 인용 한 코드는 내가 만든 것이 아닙니다. /etc/profile우분투 12.04 의 기본값 입니다. /etc/profilebash에서만 실행되고 다른 sh 호환 쉘이없는 것을 원한다면 어떻게 제안 하시겠습니까?
ire_and_curses

/etc/profile내 시스템 의 시스템 파일에는 맨 위에 다음과 같은 주석이 포함되어 있습니다 # System-wide .profile for sh(1). 이 의미 하는가 profileIS의 sh특정은? sh어떻게 든 전에 실행 됩니까 bash?

@Josh Voigts- sh의 하위 집합입니다 bash. /etc/profile에 대해 실행되고 sh, bash다른 모든 Bourne의 호환 포탄입니다.
ire_and_curses

@ire_and_curses 파일이 /etc/bashrc아닌 mac에서 호출 된 것 같습니다 /etc/bash.bashrc. 또한 실행되는 /bin/sh것처럼 보입니다 .
BrainStorm.exe


0

대화식 셸 (배시)을 전역 적으로 설정

이것은로드되지 않으므로 로그인 쉘과 달리로드되는 /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 사용자 정의를 쉽게 추가 할 수 있습니다.

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에서 실행 중일 수 있으므로 다시 전환 할 수 있습니다. 잊어 버린 경우 예를 들어 데스크탑 관리자를 다시 시작하십시오).

grep -r 'the' 

원하는 색상 결과를 얻을 수 있습니다.

색이 없어야합니다. 가상 콘솔에서 동일한 작업을 수행합니다 CTRLALTF1(예 : X 서버가 실행 중인지 CTRLALTF7다시 전환 할 수 있음을 기억하십시오 . 잊어 버린 경우 데스크톱 관리자를 다시 시작하십시오).

grep -r 'the' 

원하는 색상 결과를 얻을 수 있습니다.

로그인 쉘은 머신을 부팅하거나 가상 콘솔을 CTRLALTF1통해 FNth가상 콘솔 을 전환 할 때 얻는 것입니다 .

파일을 로드 /etc/profile하는 동안 로그인 셸이로드 됩니다 /etc/profile.d/*.sh.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.