Tôi đã thấy đoạn mã sau trong chuỗi này: Cách thay đổi từ csh sang bash làm shell mặc định
sleep 2
if (-x /usr/local/bin/bash) then
exec /bin/sh -c '. ~/.profile; exec /usr/local/bin/bash'
endif
Hiểu biết của tôi là nếu bạn đặt đoạn mã này vào ~/.loginnó sẽ gọi bashkhi bạn đăng nhập.
Tôi có một tình huống tương tự khi tôi muốn sử dụng một đoạn tương tự để gọi một phiên bản khác với phiên bản zshmặc định mà tôi đăng nhập. Một phần lý do tại sao tôi gặp phải sự cố này là vì tôi không thể chọn phiên bản mong muốn của tôi zshtrong các tùy chọn được phép chshvà tôi không có quyền quản trị viên.
Với cái này:
- Làm cách nào để thay đổi đoạn mã trên để thực hiện việc này khi chuyển đổi giữa các phiên bản khác nhau của zsh?
- Tại sao hai
execlệnh cần thiết trong đoạn trích ở trên? Họ làm gì? Ngoài ra, tại sao đoạn mã trên sử dụngshvàbash(người dùng có nghĩa vụ phải đăng nhậpcsh)
.zprofile:if [[ $ZSH_VERSION != 4.3.14 ]]; then exec /n/sw/zsh-4.3.14/bin/zsh --login fivà điều đó dường như có hiệu quả!