Những gì nên / không nên đi trong .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


132

Tôi đang tìm hướng dẫn về những gì nên và không nên bao gồm trong các tệp khởi động khác nhau zsh.

Tôi hiểu thứ tự tìm nguồn cung ứng của các tệp này và các điều kiện theo đó chúng có nguồn gốc, nhưng tôi vẫn chưa rõ những gì nên đi trong mỗi tệp.


Câu trả lời:


156

Dưới đây là danh sách không độc quyền về những gì mỗi tệp có xu hướng chứa:

  • .zshenvluôn có nguồn gốc, nó thường chứa các biến xuất khẩu nên có sẵn cho các chương trình khác. Ví dụ, $PATH, $EDITOR, và $PAGERthường được đặt trong .zshenv. Ngoài ra, bạn có thể thiết lập $ZDOTDIRtrong .zshenvchỉ định một vị trí thay thế cho phần còn lại của cấu hình zsh bạn.
  • .zshrclà cho cấu hình vỏ tương tác. Bạn đặt tùy chọn cho shell tương tác ở đó với các lệnh setoptunsetopt. Bạn cũng có thể tải các mô-đun shell, thiết lập các tùy chọn lịch sử, thay đổi lời nhắc, thiết lập zle và hoàn thành, et cetera. Bạn cũng đặt bất kỳ biến nào chỉ được sử dụng trong trình vỏ tương tác (ví dụ $LS_COLORS).
  • .zlogincó nguồn gốc khi bắt đầu một vỏ đăng nhập. Tập tin này thường được sử dụng để khởi động X sử dụng startx. Một số hệ thống khởi động X khi khởi động, vì vậy tệp này không phải lúc nào cũng hữu ích.
  • .zprofilevề cơ bản giống như .zloginngoại trừ việc nó có nguồn gốc trực tiếp trước đó .zshrccó nguồn gốc thay vì trực tiếp sau nó. Theo tài liệu zsh, " .zprofilecó nghĩa là một thay thế cho '.zlogin' cho người hâm mộ ksh; cả hai không có ý định sử dụng cùng nhau, mặc dù điều này chắc chắn có thể được thực hiện nếu muốn."
  • .zlogout đôi khi được sử dụng để xóa và thiết lập lại thiết bị đầu cuối.

Bạn nên xem qua các tệp cấu hình của người dùng Github ngẫu nhiên để có ý tưởng tốt hơn về những gì mỗi tệp nên chứa.


3
Cũng như một điểm rõ ràng, .zlogin có nguồn gốc sau .zshrc (xem man zshallchi tiết).
Aaron

8
Hãy nhận biết khi thiết $PATHtrong .zshenv, nhiều định dạng khác đều có nguồn gốc sau khi tập tin này sẽ ghi đè lên giá trị này. Xem zsh.org/mla/users/2003/msg00600.html .
Beau Barker

Nên $LANG$LC_ALLđi đâu?
Lenar Hoyt

23
Chỉ cần ghi chú / xác nhận của riêng tôi và để giúp đỡ bất kỳ ai khác, thứ tự cuối cùng là .zshenv→ [ .zprofilenếu đăng nhập] → [ .zshrcnếu tương tác] → [ .zloginnếu đăng nhập] → [ .zlogoutđôi khi].
Gabriel L.

23

Dưới đây là danh sách những gì mỗi tệp nên / không nên chứa, theo ý kiến ​​của tôi:

.zshenv

[Đọc mọi lúc]

Nó luôn có nguồn gốc, vì vậy nó nên đặt các biến môi trường cần được cập nhật thường xuyên . PATH (hoặc đường dẫn đối tác được liên kết của nó ) là một ví dụ hay vì có lẽ bạn không muốn khởi động lại toàn bộ phiên của mình để cập nhật. Bằng cách đặt nó trong tệp đó, mở lại trình giả lập thiết bị đầu cuối sẽ bắt đầu một phiên bản Zsh mới với giá trị PATH được cập nhật.

Nhưng hãy lưu ý rằng tệp này được đọc ngay cả khi Zsh được khởi chạy để chạy một lệnh duy nhất (với tùy chọn -c ), thậm chí bởi một công cụ khác như make. Bạn nên rất cẩn thận để không sửa đổi hành vi mặc định của các lệnh tiêu chuẩn vì nó có thể phá vỡ một số công cụ sử dụng chúng (ví dụ bằng cách đặt bí danh). Chắc chắn, nó không bị cấm vì bạn biết những gì bạn đang làm.

.zprofile

[Đọc lúc đăng nhập]

Cá nhân tôi đối xử với tệp đó như thế .zshenvnhưng đối với các lệnh và biến nên được đặt một lần hoặc không cần phải cập nhật thường xuyên :

  • biến môi trường để cấu hình các công cụ (cờ để biên dịch, vị trí thư mục dữ liệu, v.v.)
  • cấu hình thực thi các lệnh (như SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))") vì nó có thể mất một thời gian để thực thi.

Nếu bạn sửa đổi tệp đó, bạn có thể nhận được các bản cập nhật cấu hình bằng cách thay thế vỏ hiện tại bằng vỏ mới như vỏ đăng nhập:

exec zsh --login

.zshrc

[Đọc khi tương tác]

Tôi đặt ở đây mọi thứ chỉ cần để sử dụng tương tác :

  • lời nhắc,
  • hoàn thành lệnh
  • sửa lệnh
  • đề nghị lệnh,
  • làm nổi bật lệnh
  • màu đầu ra,
  • bí danh,
  • tổ hợp phím,
  • quản lý lịch sử lệnh,
  • các công cụ tương tác linh tinh khác (auto_cd, manydots-magic) ...

.zlogin

[Đọc lúc đăng nhập]

Tập tin này là như thế .zshprofile, nhưng được đọc sau .zshrc. Tôi coi vỏ được thiết lập đầy đủ tại thời điểm này.

Vì vậy, tôi sử dụng nó để khởi chạy các lệnh bên ngoài không sửa đổi các hành vi shell (ví dụ: trình quản lý đăng nhập).

.zlogout

[Đọc lúc đăng xuất] [Trong vỏ đăng nhập]

Tại đây, bạn có thể xóa thiết bị đầu cuối của mình hoặc bất kỳ thiết lập tài nguyên nào khác khi đăng nhập.

Cách tôi chọn nơi đặt cài đặt

  • nó là cần thiết bởi một lệnh chạy không tương tác :.zshenv
  • nó nên được cập nhật trên shell mới :.zshenv
  • nó chạy một lệnh có thể mất một thời gian để hoàn thành :.zprofile
  • nó liên quan đến việc sử dụng tương tác :.zshrc
  • đó là một lệnh được chạy khi shell được thiết lập đầy đủ :.zlogin
  • giải phóng một tài nguyên có được khi đăng nhập:.zlogout

0

Đừng ssh-agentgọi điện vào .zshenv. Nó khiến lesslệnh của tôi không hiển thị bất kỳ tệp văn bản nào nữa, có thể là do các tùy chọn của nó được tùy chỉnh bởi Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile).

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.