내가 읽은 다양한 제안을 바탕으로 파일 과 파일을 .profile
분리 했습니다. 변경 후 환경을 새로 고치고 셸을 종료했다가 다시 여는 것을 방지하는 데 사용하는 .bashrc
별칭이 있습니다 . 그러나 현재 두 가지 문제가 있습니다.bin
.profile
.bashrc
$PATH
기본값을 앞에 추가하기 때문에 새로 고칠 때마다 내 값이 커집니다$PATH
.fortune
새로 고칠 때가 아니라 새 셸을 시작할 때만 필요합니다bin
.
원치 않는 부작용 없이 환경을 새로 고치는 가장 정확하고 해킹적이지 않은 방법은 무엇입니까? (시스템 경로를 복사하여 .profile
내아니요옵션! )
.profile
# LOTS OF EXPORTS
export ***
export ***
export PATH=.:$HOME/bin:***:$PATH
shopt -s extglob
[ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"
fortune
.bashrc
# LOTS OF ALIASES
alias ***
alias ***
alias bin='source $HOME/.profile; set +h'
# LOTS OF FUNCTIONS
foo() {}
bar() {}
답변1
환경을 새로 고치는 가장 간단하고 쉬운 방법은 현재 셸 세션을 종료하고 새 세션을 시작하는 것입니다.
현재 셸에서 새 로그인 셸을 시작할 수도 있지만 이로 인해 환경 변수를 PATH
수정하고 일부 상태로 재설정하지 않은 경우에도PATH
를 사용하여 새 셸을 시작할 수도 있습니다 . 그러면 env -i bash -l
새 로그인 셸을 호출하기 env -i
전에 환경이 지워집니다 . bash
이는 상속된 환경이 다르기 때문에 새 터미널에서 새 셸을 시작하는 것과 다를 수도 있습니다.
답변2
인라인 테스트 사용 및 조건부 경로 내보내기 고려.bashrc
[[ $PATH =~ "$HOME/bin" ]] && export PATH="${HOME}/bin:${PATH}"
명령의 경우 로그인 쉘에서만 실행되는 명령에 추가하여 fortune
로그인 시 실행되도록 할 수 있습니다. .bash_profile
애플리케이션 기본 설정에서 터미널 에뮬레이터가 로그인 셸을 실행하도록 강제할 수 있습니다.