bash
hành động khác nhau cho dù đó là vỏ hay ngôn ngữ lập trình bình thường (như perl
hoặc python
).
Theo thiết kế, các cài đặt trong ~/.bash_profile
, ~/.bashrc
v.v. dành cho người dùng để đặt mọi thứ khi bash
đóng vai trò của trình bao (vỏ đăng nhập, vỏ xen kẽ). Hãy suy nghĩ về môi trường bạn có trong xterm
(vỏ tương tác) hoặc trong ssh
phiên (vỏ đăng nhập) hoặc trong bảng điều khiển (vỏ đăng nhập).
Mặt khác, bash
cũng là một ngôn ngữ progamming mạnh mẽ , rất nhiều về các kịch bản để quản lý các dịch vụ systemd
- đòi hỏi một phong cách làm việc khác. Ví dụ: khi nhà phát triển đang viết kịch bản hệ thống hoặc bash
chương trình, anh ấy / cô ấy sẽ không muốn tự động lấy nguồn của người dùng ~/.bash_profile
. Nó là một chương trình bình thường, không phải là một vỏ. Một chương trình bình thường (bao gồm bash
các chương trình) sẽ tự nhiên kế thừa các cài đặt từ chế độ làm việc hiện tại (shell), nhưng không đặt chúng.
Nếu chúng ta viết một chương trình cho cron
trong bash
-nó chỉ xảy ra phải được viết bằng bash
; trên thực tế, chúng ta có thể viết nó trong python
hoặc perl
hoặc bất kỳ progamming khác vào ngôn ngữ thì chúng ta có thể có một tùy chọn để nguồn bash
's ~/.bash_profile
(đọc: thiết lập của vỏ của người dùng, mà chỉ xảy ra được cùng một ngôn ngữ của ngôn ngữ lập trình của bạn):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
Tuy nhiên, nếu người dùng cụ thể đó không sử dụng bash
làm vỏ của họ thì sao? Ông / bà có thể sử dụng zsh
, ksh
, fish
, vv Vì vậy, thực tế có thể sẽ không thực sự làm việc khi viết chương trình cho mục đích công.
Vì vậy, bạn có thể nguồn ~/.bash_profile
nếu bạn nghĩ rằng nó sẽ làm việc. Nhưng, ở đây, không phải là về việc chúng ta có thể tìm nguồn một tệp hay không, mà là về cách mọi thứ nên hoạt động trong hệ thống: khái niệm thiết kế . Tóm lại: chúng ta nên xem bash
như một cái gì đó có 2 vai trò: ngôn ngữ shell và progamming . Rồi mọi thứ sẽ dễ hiểu hơn nhiều.
.bashrc
có một dòng ngăn không cho nó chạy trong các vỏ không tương tác.