Sự khác nhau giữa Login shell và Non-login shell trong Linux

Sự khác nhau giữa Login shell và Non-login shell trong Linux – Cuongquach.com | Hôm nay chúng ta sẽ cùng tìm hiểu chủ đề về kiến thức Linux, đó là về môi trường shell khi bạn sử dụng lúc ssh vào Linux hoặc xài cổng console.

Chương trình shell Linux, ví dụ như bash/sh sẽ sử dụng tập hợp các script để tạo nên môi trường sử dụng. Mỗi script có một nhiệm vụ nhất định như khai báo biến, khởi tạo biến môi trường và có ảnh hưởng đến các môi trường khác nhau. Mỗi script sau khi thực thi có thể ghi đè lên giá trị biến môi trường từ các script trước.

Cùng CuongQuach tìm hiểu về sự khác nhau giữa Login Shell Non-login Shell nhé.

Có thể bạn quan tâm chủ đề khác
Tắt/mở dịch vụ firewalld trên CentOS 7
Hướng dẫn ghi log các lệnh được thực thi trên Linux
4 cách kiểm tra thông tin phiên bản OS CentOS RHEL
Tạo Mirror Local EPEL Repository
12 ví dụ sử dụng lệnh SCP để copy file/folder trên Linux

Login shell

Một Login shell được khởi tạo sau khi bạn login thành công vào hệ thống từ terminal ssh hoặc console. User đăng nhập sẽ khởi chạy tiến trình đầu tiên /bin/login , bằng cách Linux OS đọc file /etc/passwd. Login shell là tiến trình đầu tiên được thực thi với user ID khi login tạo một session. Tiến trình login shell sẽ có thêm một dấu gạch ngang phía trước để phân biệt. Ví dụ bash shell sẽ là –/bin/bash.

Khi shell bash được gọi như Login shell, thì một số thứ tự file được được load theo thứ tự như sau :

  • Tiến trình login gọi file /etc/profile
  • /etc/profile gọi script trong /etc/profile.d/*
  • Tiến trình login gọi $HOME/.bash_profile
  • $HOME/.bash_profile gọi $HOME/.bashrc
  • $HOME/.bashrc gọi /etc/bashrc

Login shell có thể được khởi tạo mới trên shell hiện tại bằng các lệnh sau

# su -
# su -l
# su --login
# su USERNAME -
# su -l USERNAME
# su --login USERNAME
# sudo -i

Một Login Shell có thể được kiểm tra bởi câu lệnh sau :

# echo $0
-/bin/bash

Nếu kết quả output là tên của shell, thêm vào trước bởi dấu gạch ngang thì đó là login shell. Ví dụ: -bash, -sh

Non-login shell

Một Non-login shell được bắt đầu bởi các chương trình như script cronjob hay dịch vụ  linux mà không cần phải login tài khoản user vào hệ thống Linux. Trong trường hợp này, chương trình chỉ chuyển tên của shell thực thi. Ví dụ, với một bash shell nó chỉ đơn giản là bash.

Khi bash được gọi như Non login shell:

  • Tiến trình (shell) Non-login gọi $HOME/.bashrc
  • $HOME/.bashrc gọi /etc/bashrc
  • /ect/bashrc gọi scripts trong /etc/profile.d/

Non-Login shell có thể được khởi tạo mới trên shell hiện tại bằng các lệnh sau

# su
# su USERNAME

Một Non-Login Shell có thể được kiểm tra bởi câu lệnh sau :

# echo $0
bash

Trong kết quả đầu ra của lệnh trên, không được thêm vào dấu gạch ngang thì nó là Non -login shell. Ví dụ: bash, sh…

Vậy bạn chỉ cần hiểu cơ bản đó là trong một số hệ thống dịch vụ hay khi chạy script, sẽ có một số trường hợp script hoặc dịch vụ không chạy được do không có biến môi trường cần thiết để chạy như user login shell bình thường. Điều này thuận tiện cho bạn debug vấn đề liên quan.

Nguồn: https://cuongquach.com/

Quách Chí Cường: Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !
Related Post