Làm thế nào để bạn vô hiệu hóa Nhật Bản oh-my-zsh (và zsh) mà không cần gỡ cài đặt nó?


16

Tôi đã thử môi trường dev mới bao gồm zsh và oh-my-zsh. Bây giờ tôi đã cài đặt oh-my-zsh, nó bắt đầu theo mặc định trên các thiết bị đầu cuối của tôi (iTerm2 và thiết bị đầu cuối) luôn bắt đầu với zsh và với các cài đặt được bật từ oh-my-zsh. Tôi đã tự hỏi nếu có thể "vô hiệu hóa" hoặc ngừng sử dụng zsh và thiết lập của nó với oh-my-zsh mà không phải gỡ cài đặt oh-my-zsh? Cũng thật tốt khi biết cách bật chúng trở lại.

Hiện tại, thiết bị đầu cuối của tôi tự động đi vào zsh (tôi nghĩ) và sử dụng oh-my-zsh tự động. Tôi muốn có nhiều quyền kiểm soát hơn và tôi có thể kiểm soát cả hai, khi zsh đang được sử dụng và khi các tính năng oh-my-zsh đang được sử dụng.

Một điều tôi cũng quan tâm khi biết là, làm thế nào để các ứng dụng đầu cuối biết lớp vỏ nào sẽ bắt đầu chạy khi khởi động. Đó sẽ là tốt đẹp để có thể kiểm soát quá!

Nếu bạn giải thích càng nhiều càng tốt về "lý do" của mỗi lệnh bạn đưa cho tôi, điều đó sẽ hữu ích! :)


Tôi đang dùng OS X. Không chắc có vấn đề gì không, nhưng tôi có xu hướng thích câu trả lời hơn, phù hợp hơn với môi trường Unix chung hơn là của riêng tôi.


bạn muốn ngừng sử dụng zsh? hay oh-my-zsh? cái nào
strugee

hoặc và cả hai. tức là tôi muốn có thể kiểm soát cả hai, khi tôi đang sử dụng zsh và oh-my-zsh
Charlie Parker

Câu trả lời:


19

Từ ngữ của câu hỏi của bạn không rõ ràng, vì vậy tôi không thể nói nếu bạn muốn ngừng sử dụng zshhay bạn muốn ngừng sử dụng oh-my-zsh. Tôi sẽ bao gồm cả hai.

Vô hiệu hóa zsh

Đơn giản chỉ cần chạy chshvà chọn bất cứ thứ gì bạn đang sử dụng trước đây. Nếu bạn không biết bạn đang sử dụng loại vỏ nào trước đây thì gần như chắc chắn bash. Lệnh này thay đổi "vỏ đăng nhập" được liên kết với người dùng của bạn. Về cơ bản, nó thay đổi vỏ mặc định của bạn.

Bạn sẽ cần mở một cửa sổ terminal mới để các thay đổi có hiệu lực. Nếu điều này không hoạt động, bạn sẽ cần phải đăng xuất và đăng nhập lại để xác định lại môi trường của bạn.

Chỉ vô hiệu hóa oh-my-zsh

  1. Kiểm tra nếu ~/.zshrc.pre-oh-my-zshtồn tại. Nó có thể làm được. (Tập tin này sẽ được tạo ra khi các oh-my-zshkịch bản cài đặt chuyển trước đó của bạn .zshrcra khỏi con đường. .zshrcLà một tập tin khởi động của zsh, tương tự như .bashrccho bash.)
  2. Nếu có, hãy làm mv ~/.zshrc ~/.zshrc.oh-my-zsh. Điều này sẽ đặt các oh-my-zsh-created .zshrcra khỏi con đường, vì vậy chúng tôi có thể phục hồi bản gốc, bằng cách thực hiện mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc.
  3. Nếu nó không tồn tại, mở ~/.zshrctrong một trình soạn thảo văn bản. Tìm dòng nói source $ZSH/.oh-my-zshvà bình luận hoặc loại bỏ nó. Điều này sẽ vô hiệu hóa việc khởi tạo oh-my-zsh.

Bạn sẽ cần phải khởi động lại trình bao của mình để các thay đổi có hiệu lực.


Tôi xin lỗi về từ ngữ của tôi. Tôi tin rằng tôi đã làm rõ nó. Bây giờ có rõ không? Cảm ơn btw.
Charlie Parker

@CharlieParker yeah, tôi đã lười biếng. Tôi sẽ mở rộng câu trả lời, có thể giải thích một chút về "tại sao".
strugee

1
@CharlieParker trong trường hợp bạn không nhận thấy, tôi đã cập nhật câu trả lời này. cho tôi biết nếu có bất cứ điều gì có thể được cải thiện.
strugee

4

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) 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 ~/.zshliên kết tượng trưng; rm ~/.zsh, hoặc là
      • di chuyển ~/.zshthư 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óatạ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/passwdkhô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à ~/.shellsymlink 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 roottà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

3

chsh -s / bin / bash

Để đặt thủ công trình bao mặc định mới, hãy thực hiện chsh -s / my / new / shell, ví dụ: chsh -s / bin / bash. Sau đó, chỉ cần mở lại vỏ của bạn.


2

Bạn có thể yêu cầu zsh tải các tệp cấu hình cho mỗi người dùng từ một thư mục khác bằng cách đặt biến môi trường ZDOTDIRtrước khi bắt đầu zsh.

Nếu bạn muốn bắt đầu zsh mà không tải các tệp cấu hình của mình, hãy đặt thành thư ZDOTDIRmục không tồn tại. Nếu bạn muốn bỏ qua các tệp cấu hình hệ thống (ngoài /etc/zshenv), bạn có thể chạy zsh -f. Nếu bạn muốn bỏ qua các tệp cấu hình hệ thống nhưng chạy các tệp theo người dùng, hãy chạy zsh -d.

Ví dụ: nếu bạn muốn lái thử oh-my-zsh mà không biến nó thành mặc định, đừng đặt .zshrctừ oh-my-zsh vào thư mục chính của bạn. Thay vào đó, đặt nó ở một nơi khác, ví dụ. trong ~/.oh-my-zsh, và sau đó chạy ZDOTDIR=~/.oh-my-zsh zshkhi bạn muốn sử dụng oh-my-zsh.


Các ứng dụng đầu cuối chạy shell được chỉ định bởi SHELLbiến môi trường. Nếu biến này không được đặt, chúng sẽ chạy shell đăng nhập được chỉ định trong cơ sở dữ liệu người dùng ( /etc/passwd). Bạn có thể yêu cầu một ứng dụng khác khi bạn khởi động trình giả lập thiết bị đầu cuối, vd xterm -e fish.


0

Vì đó là một chút ẩn trong @Gilles trả lời cách nhanh chóng để tải zsh mà không cần bất kỳ cấu hình nào, ví dụ: .zshrc .zshenv, v.v.

zsh -f

Điều này hữu ích khi bạn muốn kiểm tra xem có bất cứ điều gì trong cấu hình của bạn đang ngăn một số tính năng của zsh hoạt động không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.