Shell là gì ? Sự khác nhau giữa SH và Bash

Shell là gì ?

Ta hoàn toàn có thể hiểu nôm na, Shell là một chương trình phân phối giao diện tiếp xúc giữa người dùng và hệ quản lý và điều hành, về mặt kỹ thuật, Shell là một interface nằm giữa OS Kernel và người dùng, nó phân phối một thiên nhiên và môi trường để người dùng tương tác với Kernel ( nhân của hệ quản lý ) .
Các chương trình Shell có trách nhiệm nhận và thông dịch những lệnh được nhập từ người dùng và chuyển đến nhân của hệ quản lý và điều hành để thực thi. Có thể nói, Shell là cầu nối giữa con người và máy tính .

SH là gì ?

Bạn đang đọc: Shell là gì ? Sự khác nhau giữa SH và Bash

Sh – ngôn từ dòng lệnh ( Shell Command Language ) là một ngôn từ lập trình thông dịch được diễn đạt theo chuẩn POSIX standard. Nó là ngôn từ tiên phong được sử dụng cho những chương trình Shell và xuất hiện trên hầu hết những mạng lưới hệ thống Unix / Linux .
Sh thích hợp cho việc lập trình shell vì lợi thế nhỏ gọn và vận tốc giải quyết và xử lý. Nhưng nó cũng có những điểm yếu kém như thiếu những tính năng tương tác ( vd : tính năng gọi lại những lệnh trước đó – history ), không có những tính năng tích hợp số học cũng như giải quyết và xử lý logic .

Bash là gì ?

Bash khởi đầu như thể một bản tiến hành thích hợp với Sh ( sh-compatible implementation ), nó thừa kế những gì mà Sh đã có và phát huy những gì mà Sh chưa có. Mặc dù nó có trước chuẩn POSIX vài năm, nhưng với thời hạn nó đã có được rất nhiều tiện ích lan rộng ra, một số ít tiện ích lan rộng ra của nó đã biến hóa hành vi của chuẩn POSIX shell scripts .
Bash có hổ trợ quy đổi – posix, giúp cho nó tuân thủ theo chuẩn POSIX hơn ( more POSIX-compliant ) .

Vậy SH = Bash ?

Trong một khoản thời gian dài, symlink /bin/sh được sử dụng để trỏ về /bin/bash như là mặc định trên hầu hết các hệ thống Unix/Linux. Vì vậy, gần như có thể bỏ qua sự khác biệt giữa cả hai.

Nhưng hiện nay, trên các hệ thống Unix/Linux thông dụng, symlink /bin/sh không còn được mặc định trỏ về /bin/bash nữa:

Xem thêm: diễn viên trong tiếng Tiếng Anh – Tiếng Việt-Tiếng Anh

  • Trên các hệ điều hành Debian và Ubuntu, /bin/sh được trỏ mặc định đến (symlink) đến /bin/dash.
  • Busybox, thường được thực thi trong quá trình khởi động của hệ thống LINUX như là 1 phần của initramfs (bao gồm các chương trình và file nhị phân thực hiện tất cả các hoạt động cần thiết để khởi tạo – mount root filesystem như cung cấp chức năng kernel hay cung cấp trình điều khiển Mass Storage Controller). Nó sử dụng /bin/ash là mặc định.
  • Trên các máy macbook chạy hệ điều hành macOS, /bin/zsh được sử dụng là mặc định.

Vậy làm thế nào để ta kiểm tra được hệ thống của mình đang sử dụng bản triển khai shell nào. Ta sử dụng lệnh printenv để kiểm tra.

Một số điểm khác nhau giữa Sh và Bash:

  • “[[” không khả dụng trong SH.
  • Trong sh không có kiểu dữ liệu mảng.
  • Bash có nhiều phần mở rộng cú pháp theo giống C như vòng lặp với 3 biến số for(i = 0; i <= 3; i++) các phép gán tăng, giảm như +=, -=, *=, /=.
  • Bash có hổ trợ *.{jpg, png} và {0..12}
  • Ngoài ra còn có nhiều phần mở rộng khác.

Shebang

Shebang (hay sha-bang, hashbang, pound-bang, hash-pling) là kí tự “!#”, nó luôn được đặt ở dòng đầu tiên trong mỗi script. Trong hệ thống UNIX/LINUX, mỗi khi 1 script được chạy, đầu tiên program loader sẽ dựa vào Shebang để xác định script sẽ được thực thi bởi trình biên dịch nào. Nếu 1 script không có Shebang thì mặc định nó sẽ được thực thi bởi Sh.

Trong trường hợp trong hệ thống ta có nhiều version của 1 trình biên dịch /usr/bin/python/usr/local/bin/python thì hệ thống sẽ không tìm được trình biên dịch của script này bằng Shebang. Ta có thể sử dụng env – run a program in a modified environment để xử lý vấn đề trên.

Qua những khái niệm trên, những bạn đã hoàn toàn có thể vấn đáp được những câu hỏi ở đầu bài viết rồi phải không. Ngoài Bash ra còn có rất nhiều bản thích hợp với Sh như Dash, zsh, ash … Vì vậy, hoàn toàn có thể trên cùng 1 hệ điều hành quản lý, cùng phiên bản nhưng tuỳ vào sở trường thích nghi và thói quen của người dùng mà hoàn toàn có thể lựa chọn những bản thích hợp khác nhau, dẫn đến việc những cấu trúc lệnh hoàn toàn có thể khác nhau. Trong series này, mình sẽ đi sâu vào bản thích hợp Bash để lý giải về cấu trúc và những sử dụng của nó .

4.5/5 - (2 votes)
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments