it-swarm.dev

모든 쉘에서 읽은 ".bashrc"파일이 있습니까?

~/.bashrc 사용자 별 환경 변수, 별칭, PATH 변수 수정 등을 지정할 수있는 유일한 장소는?

~/.bashrc은 (는) bash 전용 인 것 같지만 다른 쉘도 있습니다 ...

115
Stefan

파일 $HOME/.profile는 bash, sh, dash 및 기타를 포함하여 여러 쉘에서 사용됩니다.

Bash 매뉴얼 페이지에서 :

Bash가 대화식 로그인 쉘로 호출 될 때 ... 파일이 존재하면 먼저/etc/profile 파일에서 명령을 읽고 실행합니다. 해당 파일을 읽은 후 ~/.bash_profile, ~/.bash_login 및 ~/.profile을 순서대로 찾아서 존재하고 읽을 수있는 첫 번째 명령을 읽고 실행합니다.

csh와 tcsh는 명시 적으로 ~/.profile 그러나 그 껍질은 다소 구식입니다.

97
msw

~/.profile는 환경 변수 정의 및 로그인 할 때 실행하려는 그래픽이 아닌 프로그램 (예 : ssh-agent, screen -m)에 적합한 장소입니다. Bourne 스타일 쉘 (sh, ksh, bash) 인 경우 로그인 쉘에서 실행됩니다. Zsh는 ~/.zprofile를 대신 실행하고 Csh 및 tcsh는 ~/.login를 실행합니다.

X 디스플레이 관리자 (xdm, gdm, kdm, ...)로 로그인 한 경우 ~/.profile의 실행 여부는 배포판에서 디스플레이 관리자 및 데스크탑 환경을 구성한 방법에 따라 다릅니다. "사용자 정의 세션"으로 로그인하면 일반적으로 ~/.xsession가 실행됩니다.

~/.bashrc는 별칭, 기능, 셸 옵션 및 프롬프트와 같은 bash 특정 설정에 적합한 장소입니다. 이름에서 알 수 있듯이 bash에만 적용됩니다. csh에는 ~/.cshrc, ksh에는 ~/.kshrc, zsh에는 <drumroll> ~/.zshrc가 있습니다.

또한보십시오:

공통 파일은 없지만 모든 쉘을 공통 파일에서 읽을 수 있습니다.

  1. bash.bash_profile 또는 .bashrc에서 읽습니다.
  2. zsh.zprofile에서 읽습니다. and.zshrc
  3. ksh.profile 또는 $ENV에서 읽습니다.

여기 내가하는 일이 있습니다.

~/.env

# Put environment variables here, e.g.
PATH=$PATH:$HOME/bin

~/.shrc

test -f "$HOME/.env" && . "$HOME/.env"

# Put interactive Shell setup here, e.g.
alias ll='ls -l'
PS1='$PWD$ '
set -o emacs

~/.bashrc

test -f ~/.shrc && source ~/.shrc

# Put any bash-specific settings here, e.g.
HISTFILE=~/.bash_history
shopt -s extglob
IGNOREEOF=yes

~/.zshenv

# Put any zsh-specific settings for non-interactive and interactive sessions, e.g.
setopt braceexpand
setopt promptsubst
setopt shwordsplit

~/.zshrc

test -f ~/.shrc && source ~/.shrc

# Put any zsh-specific interactive settings here, e.g.
HISTFILE=~/.zsh_history
setopt ignoreeof

~/.profile

# Interactive sub-shells source .env, unless this is bash or zsh,
# because they already sourced .env in .bashrc or .zshrc.
if test -z "$BASH_VERSION" -a -z "$ZSH_VERSION" || test -n "$BASH_VERSION" -a \( "${BASH##*/}" = "sh" \)
then
    test -f "$HOME"/.env && . "$HOME"/.env
fi

# The name is confusing, but $ENV is ksh's config file for interactive sessions,
# so it's equivalent to .bashrc or .zshrc.
# Putting this here makes running an interactive ksh from any login Shell work.
test -f "$HOME"/.shrc && export ENV="$HOME"/.shrc

# Put any login Shell specific commands here, e.g.
ssh-add
stty -ixon

~/.bash_profile

source ~/.bashrc
source ~/.profile

~/.zlogin

# zsh sources .zshrc automatically, only need to source .profile
source ~/.profile

~/.zprofile

(empty)

시스템에 대한 루트 액세스 권한이있는 경우 다른 방법은 pam_env를 설정하는 것입니다.

당신은 넣을 수 있습니다

session optional pam_env.so user_envfile=.env

관련 /etc/pam.d 파일 (예 : 데비안의 /etc/pam.d/common-session)에서 PAM~/.env에서 환경 변수를 읽습니다.

pam_env는 기본적으로 VAR=value 항목 만 지원합니다.

더 많은 정보:

23
Mikel

쉘마다 환경이 정의되어 있기 때문에 다른 쉘에 대한 환경 구성 파일과 같은 것은 없습니다.

Csh에서는 bash에서 setenv를 사용하고 export를 사용하여이를 정의합니다.

어쨌든 자신 만의 설정 파일을 작성하여 쉘의 도트 파일에 source와 함께 포함시킬 수 있습니다.

15
echox