Tôi nhớ rộng rãi những gì nó làm, nhưng không cụ thể:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Mục đích chính xác cho nó một lần nữa là gì?
Tôi nhớ rộng rãi những gì nó làm, nhưng không cụ thể:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Mục đích chính xác cho nó một lần nữa là gì?
Câu trả lời:
Điều này nguồn một ~/.bashrc
tập tin nếu nó tồn tại và tải nội dung của tập tin đó.
Câu trả lời ngắn gọn cho câu hỏi của bạn là: bạn đã làm điều này cho dù bạn có đến máy bằng cách nào, thông qua một vỏ được mở trong phiên máy tính để bàn tương tác hoặc đăng nhập ssh vào máy, bash
vỏ của bạn có một thiết lập phù hợp với nó.
Câu trả lời dài hơn cho lý do tại sao bạn phải làm theo cách này nằm bên dưới ...
Lý do bạn muốn làm điều này nằm trong lịch sử bash: một trong những tệp đó được sử dụng cho thông tin đăng nhập tương tác, còn lại được sử dụng cho thông tin đăng nhập không tương tác. Ý nghĩ đằng sau việc có hai thiết lập khác nhau là bạn có thể muốn một số thứ trong vỏ tương tác của mình (một dấu nhắc ưa thích, thông báo trong ngày, thông báo đầu ra lệnh của bạn, v.v.) mà bạn không muốn trong phiên không tương tác vì nó tăng khả năng truy cập theo chương trình vào đầu vào và đầu ra và những gì không.
Đối với hầu hết người dùng mặc dù bạn muốn cả hai môi trường giống nhau. Hầu hết chúng ta không chạy các thiết lập bash đủ phức tạp để đảm bảo tách biệt các thiết lập tương tác và không tương tác như thế này.
Cái .bash_profile
được thực thi cho shell đăng nhập, trong khi .bashrc
được thực thi cho shell không đăng nhập tương tác.
Có một bài viết rất hay của Josh Staiger nói về lý do tại sao cái này lại khác và làm thế nào để nhớ nơi để đặt mọi thứ . Cho phép tôi trích dẫn một số ở đây:
Một vỏ đăng nhập hoặc không đăng nhập là gì?
Khi bạn đăng nhập (nhập tên người dùng và mật khẩu) qua bàn điều khiển, ngồi ở máy hoặc từ xa qua
ssh
:.bash_profile
được thực thi để định cấu hình trình bao của bạn trước dấu nhắc lệnh ban đầu. Nhưng, nếu bạn đã đăng nhập vào máy của mình và mở một cửa sổ đầu cuối mới (xterm
) bên trong Gnome hoặc KDE, thì.bashrc
sẽ được thực thi trước dấu nhắc lệnh của cửa sổ..bashrc
cũng được chạy khi bạn bắt đầu một bash mới bằng cách gõ/bin/bash
vào terminal.Mac OS X - một ngoại lệ
Một ngoại lệ đối với các nguyên tắc của cửa sổ đầu cuối là Mac OS X
Terminal.app
, chạy vỏ đăng nhập theo mặc định cho mỗi cửa sổ đầu cuối mới, gọi.bash_profile
thay vì.bashrc
. Các trình giả lập thiết bị đầu cuối GUI khác có thể làm tương tự, nhưng hầu hết có xu hướng không.sự giới thiệu
Hầu hết thời gian bạn không muốn duy trì hai tệp cấu hình riêng biệt cho các vỏ đăng nhập và không đăng nhập - khi bạn đặt PATH, bạn muốn nó áp dụng cho cả hai. Bạn có thể khắc phục điều này bằng cách tìm nguồn
.bashrc
từ.bash_profile
tệp của mình , sau đó đặt PATH và các cài đặt chung.bashrc
.Để thực hiện việc này, hãy thêm các dòng sau vào .bash_profile:
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
Bây giờ khi bạn đăng nhập vào máy của bạn từ bàn điều khiển
.bashrc
sẽ được gọi.
Xem mô tả của Ian C về những gì dòng nguồn làm
Điều này được bao quanh bởi một câu lệnh if
if x; then
....
fi
cái này kiểm tra trên x và sau đó chạy mã giữa lúc đó và fi (Ý tưởng về fi kết thúc và nếu và các endins khác bằng cách đảo ngược từ khóa ăn xin được sử dụng trong sh và shell liên quan.
Kiểm tra được thực hiện ở đây cũng [ -f ~/.bashrc ]
giống như test -f .bashrc
kiểm tra if báo trả về đúng iff những gì sau -f là một tệp và nó tồn tại.
Vì vậy, mã trên cho biết nếu có .bashrc chạy nó vào trình bao của bạn.