Làm thế nào để thiết lập lại môi trường shell?


25

Vấn đề này đã gây ra cho tôi trong một thời gian và mặc dù tôi nghĩ rằng tôi đã tìm thấy câu trả lời của mình thông qua EnvWatcher , thật không may, nó chỉ hoạt động trên Bash. Và tôi sử dụng zsh.

Tôi muốn sao chép những thứ mà env-watcher làm, ở mức độ thấp hơn có thể, nhưng tôi cần biết liệu có lệnh nào để tôi có thể đặt lại trình bao cho giai đoạn khởi động sạch không.

Ví dụ, tôi muốn có quy trình làm việc sau đây.

source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more

Có khả năng như vậy được xây dựng, hoặc tôi đang đuổi theo những con bướm?

Câu trả lời:


32

Bạn có thể exec zsh, nó sẽ cung cấp cho bạn một zsh mới và chạy lại các hàm init. Lưu ý rằng bạn cần phải exec zsh -lđăng nhập zsh để giữ trạng thái "vỏ đăng nhập". Tôi không biết nó bảo tồn lịch sử lệnh như thế nào (có vẻ như nó hoạt động với tôi, nhưng nếu bạn sử dụng nhiều shell trong các thiết bị đầu cuối khác nhau, bạn có thể nhận được 'xuyên âm' giữa lịch sử của hai shell)


4
Điều đó sẽ không hoàn tác các biến môi trường xuất khẩu, phải không? (Mặc dù mọi cài đặt được cài đặt bởi tệp init của bạn sẽ được đặt lại.)
cjm

Có lẽ nó sẽ không. Tôi đã không xem xét khía cạnh đó bởi vì tôi đã không nghĩ về các biến môi trường như là thứ bạn đặt tạm thời trong vỏ.
Random832

15

Để hoàn tác các biến môi trường đã xuất, bạn có thể sử dụng envlệnh env -i zsh. envchạy lệnh được đưa ra như một đối số và -icung cấp cho nó một môi trường sạch sẽ.

Tùy thuộc vào cấu hình của bạn, bạn có thể cần phải thêm -lvào zsh /  bashđể tải .profile, và bạn cũng có thể cần phải "bootstrap" môi trường của mình $HOMEđể shell biết nơi tìm tệp khởi động của bạn. Nhìn chung, điều này trông giống như:

env -i HOME="$HOME" zsh -l

1
Bạn có thể cần một vài người khác, như TERMDISPLAY.
G-Man nói 'Phục hồi Monica'
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.