Chuyển đổi cấu hình ZSH
Nếu bạn muốn kiểm tra khung cấu hình zsh khác nhau (oh-my-zsh, zprezto, vv) và chuyển đổi giữa chúng, đặt cược tốt nhất của bạn đang sử dụng liên kết tượng trưng cho ~/.zsh
, ~/.zshrc
, ~/.zlogin
, ~/.zlogout
, ~/.zprofile
, và ~/.zshenv
. Bạn có thể muốn tạo một tập lệnh shell cho mỗi khung để tạo các liên kết tượng trưng đó để chuyển đổi nhanh hơn.
Đặt cấu hình khung của bạn trong các thư mục riêng của họ. Đối với từng khung.
- Cài đặt khung trong thư mục riêng của nó nếu có thể, nếu không
- Nếu khung bắt buộc cài đặt
~/.zsh
, thì
- Bảo vệ hiện tại
~/.zsh
đầu tiên. Hoặc
- xóa
~/.zsh
liên kết tượng trưng; rm ~/.zsh
, hoặc là
- di chuyển
~/.zsh
thư mục;mv ~/.zsh ~/.zsh.backup
- Chạy trình cài đặt khung.
- Di chuyển thư mục khung vào thư mục riêng của nó. ví dụ
mv ~/.zsh ~/.oh-my-zsh
.
- Lặp lại cho mỗi khung.
Sau khi hoàn thành, tạo một kịch bản shell cho mỗi khung để tạo các liên kết tượng trưng cần thiết. Đây là một ví dụ cho zprezto, vì tôi đã sử dụng nó.
$ 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
Kịch bản này khá đơn giản và dựa trên thực tế là tất cả các liên kết tượng trưng của tôi được tổ chức với cùng một mẫu. Bạn có thể sao chép và dán xóa và tạo các dòng sau vòng lặp cho các liên kết tượng trưng mà bạn không tuân theo mẫu.
Sau khi hoàn thành, sử dụng ~/bin/use-zprezto
- hoặc - ~/bin/use-whatever
để chuyển đổi giữa các khung zsh.
Lưu ý rằng các thay đổi chỉ có hiệu lực trong các vỏ zsh mới, không phải các vỏ hiện có.
Chuyển mạch vỏ
Điều này hơi nguy hiểm, nhưng nếu bạn rất có khuynh hướng, bạn có thể sử dụng liên kết tượng trưng cho lệnh shell của mình và đặt liên kết tượng trưng làm trình bao mặc định. Sau đó, bạn có thể làm theo use-*
phương pháp tập lệnh ở trên để thay đổi trình bao mặc định của mình.
Ví dụ với 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
Lý do điều này nguy hiểm là bạn không thể đăng nhập dưới một người dùng nếu shell được lưu trữ /etc/passwd
không phải là một chương trình hợp lệ. Vì vậy, bạn có thể tự khóa tài khoản của mình nếu không cẩn thận; tức là ~/.shell
symlink của bạn bị hỏng hoặc không trỏ đến chương trình tương tác. Bạn có thể thử điều này với tài khoản người dùng, nhưng điều này KHÔNG ĐƯỢC KHUYẾN NGHỊ cho root
tài khoản của bạn .
Nếu bạn vẫn muốn tiếp tục, thì
$ ~/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
? hayoh-my-zsh
? cái nào