bashhành động khác nhau cho dù đó là vỏ hay ngôn ngữ lập trình bình thường (như perlhoặc python).
Theo thiết kế, các cài đặt trong ~/.bash_profile, ~/.bashrcv.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 sshphiên (vỏ đăng nhập) hoặc trong bảng điều khiển (vỏ đăng nhập).
Mặt khác, bashcũ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 bashchươ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 bashcá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 crontrong 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 pythonhoặc perlhoặ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 bashlà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_profilenế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 bashnhư 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.
.bashrccó một dòng ngăn không cho nó chạy trong các vỏ không tương tác.