ZSH 구성 전환
당신이 다른 zsh을 구성 프레임 워크 (오 - 내 - zsh을, zprezto 등) 테스트하려는 경우 와 그들 사이의 스위치를, 가장 좋은 건에 대한 심볼릭 링크 사용 ~/.zsh
, ~/.zshrc
, ~/.zlogin
, ~/.zlogout
, ~/.zprofile
,와 ~/.zshenv
. 빠른 전환을 위해 해당 심볼릭 링크를 만들기 위해 각 프레임 워크에 대해 셸 스크립트를 만들 수 있습니다.
프레임 워크 구성을 자체 폴더에 넣으십시오. 각 프레임 워크마다.
- 가능하면 자체 폴더에 프레임 워크를 설치하십시오.
- 프레임 워크가 설치를 강제로 수행
~/.zsh
하면
~/.zsh
먼저 전류를 보호하십시오 . 어느 한 쪽
~/.zsh
심볼릭 링크를 제거하십시오 . rm ~/.zsh
또는
~/.zsh
폴더를 이동하십시오 .mv ~/.zsh ~/.zsh.backup
- 프레임 워크 설치 프로그램을 실행하십시오.
- 프레임 워크 폴더를 자체 디렉토리로 이동하십시오. 예
mv ~/.zsh ~/.oh-my-zsh
.
- 각 프레임 워크에 대해 반복하십시오.
완료되면 각 프레임 워크에 대한 쉘 스크립트를 작성하여 필요한 심볼릭 링크를 작성하십시오. zprezto의 예는 이미 사용하고 있기 때문입니다.
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zprezto
#!/bin/bash
SYMLINKS=".zsh .zshrc .zshlogin .zshlogout .zshprofile .zpreztorc .zshenv .zshrc"
CONFIG_HOME="$HOME/.zprezto"
# check for unexpected error conditions
for sym in $SYMLINKS; do
# report an error and quit if $sym exists and is not a symlink
[[ -e "$HOME/$sym" -a ! -h "$HOME/$sym" ]] && { echo "error: '$HOME/$sym' is not a symlink!"; return 1; }
done
# now create the symlinks now that nothing should go wrong
for sym in $SYMLINKS; do
# remove old symlink if it exists
[[ -h "$HOME/$sym" ]] && rm -f "$HOME/$sym"
# create new symlink
ln -s "$CONFIG_HOME/$sym" "$HOME/$sym"
done
# uncomment next line to start a new zsh shell. CAUTION: each call is a zsh shell inside a zsh shell. Too many calls will put you in limbo :D
#/usr/bin/env zsh
EOF
$ chmod 700 ~/bin/use-zprezto
이 스크립트는 상당히 단순하며 모든 심볼릭 링크가 동일한 패턴으로 구성되어 있다는 사실에 의존합니다. 당신은 복사 및 붙여 넣기 할 수 있습니다 제거를 하고 만들 당신이 패턴을 따르지 않는이 심볼릭 링크에 대한 루프 후 라인.
완료되면 ~/bin/use-zprezto
-또는 ~/bin/use-whatever
-를 사용 하여 zsh 프레임 워크 간을 전환하십시오.
변경 사항은 기존 쉘이 아닌 새 zsh 쉘에서만 적용됩니다.
쉘 스위칭
약간 위험하지만 너무 기울어지면 쉘 명령에 symlink를 사용하고 symlink를 기본 쉘로 설정할 수 있습니다. 그런 다음 use-*
위 의 스크립트 방법에 따라 기본 셸을 변경할 수 있습니다.
zsh를 예로 들어 보면 ...
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zsh
#!/bin/bash
# check for valid shell symlink
if [[ ! -h "$HOME/.shell" ]]; then
echo "error: $HOME/.shell is not a symlink!"
return 1
fi
# remove existing shell symlink if it exists
[[ -h "$HOME/.shell" ]] && rm -f "$HOME/.shell"
# create new shell symlink, but warn user if this fails!
if ! ln -s /usr/bin/zsh "$HOME/.shell"; then
echo "ERROR: failed to create $HOME/.shell symlink. Manually create the symlink or future logins will fail!."
return 2
fi
EOF
$ chmod 700 ~/bin/use-zsh
이것이 위험한 이유는 저장된 쉘 /etc/passwd
이 유효한 프로그램이 아닌 경우 사용자로 로그인 할 수 없기 때문 입니다. 조심하지 않으면 계정에서 자신을 잠글 수 있습니다. 즉, ~/.shell
심볼릭 링크가 끊어 졌거나 대화 형 프로그램을 가리 키지 않습니다. 사용자 계정으로 시도해 볼 수 있지만 계정에 권장되지는 않습니다 root
.
여전히 계속하고 싶다면
$ ~/bin/use-zsh # ensures ~/.shell exists for chsh
$ echo "$HOME/.shell | sudo tee -a /etc/shells # add symlink to system's list of valid shells
$ chsh -s ~/.shell # changes default shell in /etc/passwd for $USER
zsh
습니까? 또는oh-my-zsh
? 어느?