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

Shell là gì vậy ?

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ề mặt kỹ thuật, Shell là một interface nằm giữa OS Kernel và người dùng, nó cung ứng một môi trường tự nhiên để người dùng tương tác với Kernel ( nhân của hệ điều hành quản lý ) . Các chương trình Shell có trách nhiệm nhận và thông dịch các lệnh được nhập từ người dùng và chuyển đến nhân của hệ điều hành quản lý để thực thi. Có thể nói, Shell là cầu nối giữa con người và máy tính .

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

SH là gì vậy ?

Shell là gì vậy ? 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 miêu tả theo chuẩn POSIX standard. Nó là ngôn từ tiên phong được sử dụng cho các chương trình Shell và xuất hiện trên hầu hết các 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ó các điểm yếu kém như thiếu các tính năng tương tác ( vd : tính năng gọi lại các lệnh trước đó – history ), không có các 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ì vậy ?

Bash mở màn như thể một bản tiến hành thích hợp với Sh ( sh-compatible implementation ), nó thừa kế các gì mà Sh đã có và phát huy các 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, hỗ trợ 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 địnhtrê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:

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 Như 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 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 các khái niệm trên, vàcác bạn đã hoàn toàn có thể vấn đáp được các 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ệ quản lý và điều hành, 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 các bản thích hợp khác nhau, dẫn đến việc các 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à các sử dụng của nó .

Có thể bạn quan tâm

Giới thiệu: Quang Sơn

Quang Sơn là giám đốc hocdauthau.com - Kênh thông tin học đấu thầu, kiến thức tổng hợp, công nghệ, đời sống.

0 Shares
Share
Tweet
Pin