![bash는 더 이상 사용되지 않고 zsh를 선호하므로 Catalina에서 zsh와 관련되지 않은 모든 쉘 파일을 제거할 수 있습니까?](https://linux55.com/image/12703/bash%EB%8A%94%20%EB%8D%94%20%EC%9D%B4%EC%83%81%20%EC%82%AC%EC%9A%A9%EB%90%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20zsh%EB%A5%BC%20%EC%84%A0%ED%98%B8%ED%95%98%EB%AF%80%EB%A1%9C%20Catalina%EC%97%90%EC%84%9C%20zsh%EC%99%80%20%EA%B4%80%EB%A0%A8%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EB%AA%A8%EB%93%A0%20%EC%89%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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.bash
및 conda.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 파일은 쓸모가 없습니다.