대화형 셸(Bash)에 대한 전역 설정

대화형 셸(Bash)에 대한 전역 설정

/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.bashrcbash에 특정하며 로그인 쉘과 비로그인 쉘 모두에 대해 실행됩니다.

설상가상으로 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'

관련 정보