bash는 더 이상 사용되지 않고 zsh를 선호하므로 Catalina에서 zsh와 관련되지 않은 모든 쉘 파일을 제거할 수 있습니까?

bash는 더 이상 사용되지 않고 zsh를 선호하므로 Catalina에서 zsh와 관련되지 않은 모든 쉘 파일을 제거할 수 있습니까?

macOS는 계속해서 zsh를 사용할 것이며 Catalina에서 zsh를 기본 셸로 설정할 수 있습니다. Catalina의 경우 이제 zsh가 기본 셸이므로 bash 및 oh-my-zsh의 흔적을 모두 제거해도 괜찮나요? 또한 저는 HyperTerminal을 사용하고 있습니다. 이는 더 이상 oh-my-zsh가 필요하지 않음을 의미합니다.

예:
Anaconda 설치 프로그램은 원래 이 스크립트를 내 bashrc 또는 bash_profile에 추가했기 때문에 zsh로 전환했을 때 이를 .zshrc에 복사했습니다. 최근에 bash_profile용으로 설계되었기 때문에 복사할 필요가 없거나 복사해서는 안 된다는 내용을 읽었지만 이제 macOS는 어쨌든 zsh를 사용하므로 어떻게 해야 하는지 궁금합니다. 분명히 Anaconda가 어디에 있는지 zsh에 알려야 하지만 해당 스크립트가 필요합니까, 아니면 이와 같이 Anaconda 경로를 내보낼 수 있습니까 export PATH=/Users/ty604/anaconda3/bin:$PATH?

이 Anaconda 스크립트를 zshrc에 유지하고 bash의 모든 흔적을 제거하여 bash가 사라져도 Mac이 더 이상 사용되지 않도록 할 수 있습니까?

export PATH=/Users/ty604/anaconda3/bin:$PATH

# added by Anaconda3 2019.03 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/Users/ty604/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/Users/ty604/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/ty604/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/Users/ty604/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

또한 다양한 쉘 파일의 중복된 내보내기 명령으로 인해 $PATH에 중복된 경로가 많이 있습니다.
$에코 $PATH
/Users/ty604/anaconda3/bin:/Users/ty604/anaconda3/condabin:/Users/ty604/anaconda3/bin:/Users/ty604/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/share/dotnet:/Users/ty604/flutter/bin

내 시스템의 파일
.bash_history, .bash_profile, .bashrc, .profile, .zprofile, .zsh_history, .zshrc, .zshrc.pre-oh-my-zsh

내 시스템의 폴더
.bash_sessions, .oh-my-zsh, .zsh

답변1

bash표시되는 셸 초기화 코드는 구체적으로 보이지 않으며 , zsh해당 코드의 출처인 다양한 스크립트도 작동한다고 가정하면( shell.bashconda.sh) 잘 작동해야 합니다. 스크립트 가 있으면 shell.zsh분명히 대신 사용하도록 선택할 수 있습니다 shell.bash.


zsh셸 에서 PATH변수는 배열과 연결됩니다 path. 두 가지 모두 고유한 항목만 포함하도록 만들 수 있습니다 typeset -U.

다음은 특정 값에 for를 사용하는 예입니다 PATH.

$ print -rC1 -- $path
/Users/ty604/anaconda3/bin
/Users/ty604/anaconda3/condabin
/Users/ty604/anaconda3/bin
/Users/ty604/.cargo/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/usr/local/share/dotnet
/Users/ty604/flutter/bin

경로는 /Users/ty604/anaconda3/bin처음부터 반복됩니다. 경로를 고유하게 만들려면(현재 및 미래):

$ typeset -U PATH path
$ print -rC1 $path
/Users/ty604/anaconda3/bin
/Users/ty604/anaconda3/condabin
/Users/ty604/.cargo/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/usr/local/share/dotnet
/Users/ty604/flutter/bin

/bin경로의 시작 부분으로 푸시하면 어떻게 되는지 확인하세요 .

$ path=( /bin $path )
$ print -rC1 -- $path
/bin
/Users/ty604/anaconda3/bin
/Users/ty604/anaconda3/condabin
/Users/ty604/.cargo/bin
/usr/local/bin
/usr/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/usr/local/share/dotnet
/Users/ty604/flutter/bin

(두 번째는 /bin삭제되었습니다.)

path배열은 변수와 연결되어 있으므로 변경 PATH사항도 해당 변수에서 볼 수 있습니다.

$ print -rC1 -- $PATH
/bin:/Users/ty604/anaconda3/bin:/Users/ty604/anaconda3/condabin:/Users/ty604/.cargo/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/share/dotnet:/Users/ty604/flutter/bin

답변2

나중에 zsh에이는 $PATH 시스템이 bash 쉘 etc/profile에서 파생되므로 bash 쉘의 모든 인스턴스를 삭제할 수 있음을 의미합니다.

macOS 기본 셸은 이제 zsh이므로 bash 파일은 쓸모가 없습니다.

관련 정보