모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?

모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?

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

~/.bashrc- 밖에 없는 것 같아서 여쭤봅니다만 bash, 다른 껍질도 존재합니다...

답변1

이 파일은 $HOME/.profilebash, sh, dash 등을 포함한 많은 쉘에서 사용됩니다.

Bash 매뉴얼 페이지에서:

bash가 대화형 로그인 셸로 호출되면 먼저 /etc/profile 파일(파일이 있는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후 ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아 존재하고 읽을 수 있는 첫 번째 파일부터 명령을 읽고 실행합니다.

csh와 tcsh는 명시적으로 살펴보지 않았지만 ~/.profile이러한 쉘은 약간 구식입니다.

답변2

~/.profile은 로그인 시 실행될 환경 변수 정의 및 비그래픽 프로그램(예 ssh-agent: screen -m)의 올바른 위치입니다. 이는 Bourne 스타일 쉘(sh, ksh, bash)인 경우 로그인 쉘에 의해 실행됩니다. 대신 Zsh가 실행되고 ~/.zprofileCsh 및 tcsh가 실행됩니다 ~/.login.

X 디스플레이 관리자(xdm, gdm, kdm...)에 로그인한 경우, ~/.profile이것이 작동하는지 여부는 배포판이 디스플레이 관리자와 데스크탑 환경을 어떻게 구성했는지에 따라 달라집니다. 이는 일반적으로 "사용자 정의 세션"에 로그인한 경우 수행됩니다 ~/.xsession.

~/.bashrc별칭, 함수, 셸 옵션 및 프롬프트와 같은 bash 관련 설정의 올바른 위치입니다. 이름에서 알 수 있듯이 이는 bash에만 해당됩니다. csh에는 it ~/.cshrc, ksh에는 it ~/.kshrc, zsh에는 <drumroll> 이 있습니다 ~/.zshrc.

또한보십시오:

답변3

범용 파일은 없지만 모든 쉘을 범용 파일에서 읽도록 할 수 있습니다.

  1. bash.bash_profile거나.bashrc
  2. zsh다음에서 읽기.zprofile 그리고 .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파일(예: Debian)에 저장한 다음 사용자 /etc/pam.d/common-session가 로그인하면 .PAM~/.env

기본적 으로 항목 pam_envVAR=value지원됩니다.

추가 정보:

답변4

정의되는 방식도 쉘마다 다르기 때문에 다양한 쉘에 대한 환경 구성 파일 같은 것은 없습니다.

csh와 setenvbash에서 사용하여 export정의하세요.

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

관련 정보