Sự khác biệt giữa ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc trộm?


68

Trả lời các câu hỏi trên SOAskubfox , cùng với việc chọc qua (và đọc các tiêu đề của) $HOME/etc/, cho biết một số tệp có thể được sử dụng để đặt các biến môi trường, bao gồm:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

Tôi tập hợp các tệp đó trong /etc/công việc cho tất cả người dùng trong khi các tệp trong đó $HOMElà dành riêng cho người dùng. Tôi cũng thu thập .profileđược tải khi đăng nhập trong khi được .bashrctải khi /bin/bashđược thực thi. Tôi cũng hiểu rằng các chương trình khác nhau có các tệp cài đặt khác nhau (ví dụ: .Rprofileđối với R). Nhưng tôi sẽ đánh giá cao một số làm rõ:

  • *rc*profilecác tập tin cơ bản khác nhau?
  • Phạm vi của các tệp như vậy là gì (ví dụ: tệp nào thường được sử dụng với Linux)
  • Có một hệ thống phân cấp (ví dụ: .bashrcghi đè các biến được đặt trong .settings)
  • Một tài liệu tham khảo tốt cho lớp các tập tin này là gì? Đối với các tùy chọn trong các tập tin này?

Câu hỏi liên kết


3
Xem INVOCATIONphần trong man bash. Xem FHSbài viết wiki về hệ thống tập tin Linux. Điều đó sẽ cho bạn một khởi đầu tốt và trả lời một vài trong số những câu hỏi này. Các tệp có dấu chấm trước ( .) thường dành riêng cho người dùng - chúng nằm trong $HOMEthư mục của người dùng .

3
Tất cả bọn họ? Có thật không?
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams Tôi không tìm kiếm chi tiết, chỉ là một mô tả chung về cách chúng liên quan và khi nào nên được sử dụng so với cái khác.
Abe

Câu trả lời:


48

Việc tổ chức các tệp cấu hình ít đồng nhất hơn nhiều so với các câu hỏi của bạn dường như ngụ ý. Không có "lớp", không có "thứ bậc" và không có "czar cấu hình" toàn cầu cũng như ủy ban không phê chuẩn một cú pháp chung hoặc các khái quát sạch đẹp khác như những gì bạn đang tìm kiếm. Chỉ có vô số các ứng dụng riêng biệt như R, bash, screenvà môi trường desktop GNOME, tất cả đều có cách riêng để làm việc, do đó bạn nên xem xét các tài liệu cho từng chương trình cá nhân để trả lời bất kỳ cụ thể câu hỏi về một tập tin cụ thể. Nếu nó có vẻ đặc biệt, thì đó là bởi vì: hầu hết các phần mềm Unix / Linux ngoài kia được phát triển cho các mục đích khác nhau bởi những người khác nhau, những người đã đi về cấu hình hơi khác nhau.

Để trả lời các câu hỏi khác của bạn theo chiều hướng:

  • *rc*profilekhông có nghĩa là rất nhiều, vì vậy câu hỏi này thực sự không thể được trả lời. "RC" chỉ là một từ viết tắt hoặc hậu tố thường được sử dụng cho các tệp cấu hình. Từ nguyên của nó quay trở lại thời cổ đại (trong những năm máy tính), và có lẽ có nghĩa là chạy các lệnh (từ runcom ). Chỉ vì các ứng dụng sử dụng cùng một từ không có nghĩa là chúng đồng ý với các quy ước. "Hồ sơ" là một hậu tố ít phổ biến hơn nhiều.

  • Định nghĩa phạm vi". Hầu hết các ứng dụng không chia sẻ tập tin cấu hình với các ứng dụng không liên quan khác. Một ngoại lệ có thể là /etc/profile.profile, có thể được sử dụng bởi nhiều lớp vỏ khác nhau (bao gồm ít nhất shbash). Có một cái gì đó gọi là môi trường liên quan đến mọi quy trình đang chạy có thể chứa các biến có thể ảnh hưởng đến hành vi của quy trình nói trên. Nói chung, các biến môi trường được đặt bởi các tệp cấu hình shell thích hợp hoặc có thể là các tệp cấu hình của bất kỳ môi trường máy tính để bàn đồ họa nào bạn đang sử dụng. Ngoài ra còn có các tệp cấu hình cho "thư viện", như .inputrccho đường đọc và .gtkrc*GTK, sẽ ảnh hưởng đến mọi ứng dụng sử dụng thư viện.

  • Không, không có phân cấp toàn cầu cho các tệp cấu hình. Một lần nữa, hãy tham khảo tài liệu cho chương trình cụ thể được đề cập, ví dụ, bashhướng dẫn sử dụng cho bash. Một quy ước chung mà bạn thường có thể dựa vào đó là cài đặt người dùng trong $HOMEghi đè cấu hình toàn hệ thống /etc. Điều này thường được thực hiện bằng cách đọc tệp người dùng sau hệ thống, để các cài đặt sau ghi đè lên các tệp trước đó. Tuy nhiên, đây không phải là một sự đảm bảo và để có câu trả lời dứt khoát, bạn nên tham khảo tài liệu cho chương trình cụ thể mà bạn đang sử dụng.

  • Không có "lớp", ít nhất là không có đủ chung để bao gồm tất cả các tệp bạn đã liệt kê trong câu hỏi của mình, vì vậy câu hỏi về tham chiếu cho "lớp" đó là không cần thiết. Một lần nữa, hãy tham khảo tài liệu của chương trình cụ thể bạn đang sử dụng.


5

Tôi nghĩ rằng câu hỏi này quá rộng ở nhiều cấp độ, ví dụ: bạn đang đặt câu hỏi về ít nhất bốn chương trình khác nhau trong một câu hỏi. Tôi sẽ chỉ xem xét sự khác biệt giữa các tệp cấu hình trong /etc$HOME.

Unix là một hệ điều hành đa người dùng, điều này có nghĩa nhiều người khác nhau có thể sử dụng một hệ thống, hoặc bằng cách sử dụng ssh, telnethoặc Xorg. Để cung cấp cấu hình được tiêu chuẩn hóa cho người dùng của bạn, bạn có thể cung cấp cấu hình toàn hệ thống /etc/, điều này thường được Phân phối của bạn sử dụng để cung cấp cấu hình toàn cầu, ví dụ như bashhoặc screen.

Mặt khác, một số người dùng muốn tùy chỉnh các cài đặt cho chương trình của họ theo cách riêng của họ như keybindings, màu sắc hoặc giao diện. Điều này được thực hiện thông qua các tập tin cấu hình trong của họ $HOME. Vì vậy, trong ngắn hạn /etc/cung cấp cấu hình toàn hệ thống trong khi các tệp cấu hình trong $ HOME cho phép người dùng thay đổi / ghi đè cấu hình toàn hệ thống.


3

Một phần của câu trả lời đến từ bài đăng này :

.bashrc là một kịch bản shell mà Bash chạy bất cứ khi nào nó được bắt đầu tương tác.

Tương phản .bash_profile.profilechỉ được chạy khi bắt đầu một vỏ đăng nhập mới. (bash -l)

Bạn chọn xem một lệnh đi vào .bashrcso với .bash_profiletùy thuộc vào việc bạn muốn nó chạy một lần hay cho mỗi lần khởi động shell tương tác.

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.