Đối với bất kỳ những ai đã và đang làm việc với hệ thống Linux thì chắc chắn đều thấy sự hiệu quả của nhứng script Bash Shell. Việc sử dụng script Bash shell giúp các công việc lặp đi lặp lại trên Linux được thực hiện hiệu quả, ít sai sót. Tuy nhiên để viết các script Bash shell ngắn, gọn và có thể tận dụng được trên nhiều môi trường thì chúng ta cần có những kiến thức và lượng thực hành nhất định. Vậy chính xác Bash Shell là gì? Sự khác nhau giữa SH và Bash là gì?. Hãy cùng Khotenmien.vn tìm hiểu thông qua bài viết dưới đây nhé!
1. Bash Shell là gì?
Shell script là một chương trình được sử dụng cho nhiều mục đích khác nhau, chẳng hạn như thực thi lệnh shell, chạy nhiều lệnh cùng nhau, tùy chỉnh các tác vụ quản trị, thực hiện tự động hóa,… mà bạn thường xuyên thực hiện trên máy tính của mình.
Shell script cho phép chúng ta lập trình các lệnh theo một chuỗi và hệ thống sẽ thực thi chúng. Viết shell script cho phép bạn sử dụng các chức năng lập trình như các vòng lặp for, các câu lệnh if/then/else… Shell script có sẵn trên hầu hết các bản phân phối Linux, trên MacOS và Cygwin trên Windows.
Shell script chỉ là các tập tin văn bản đơn giản. Bạn có thể sử dụng bất kỳ trình soạn thảo văn bản để viết như: vim, nano, gedit, emacs, vscode,…

2. Chức năng của Shell.
Việc thao tác trực tiếp tới kernel là rất phức tạp và đòi hỏi ký thuật cao, để trách sự phức tạp cho người sử dụng và để bảo vệ kernel từ những sai sót của người sử dụng ,shell đã được xây dựng thành lớp bao quanh kernel. Người sử dụng gửi yêu cầu tới shell, shell biên dịch chúng và său đó gửi tới kernel. Thường với UNIX có ba loại shell được dung phổ biến ,cả ba đều nhằm mục đích cung cấp các chức năng său:- Thông dịch lệnh- Khởi tạo chương trình- Dịch hướng vào ra- Kết nối đường ống- Thao tác trên file- Duy trì các biến- Điều khiển môi trường- Lập trình shell Hiện nay trên hệ điều hành Unix người ta đang sử dụng chủ yếu các loại shell là : bash, zsh, …
3. SH là gì?
Sh – ngôn ngữ dòng lệnh (Shell Command Language) là một ngôn ngữ lập trình thông dịch được mô tả theo chuẩn POSIX standard. Nó là ngôn ngữ đầu tiên được sử dụng cho các chương trình Shell và có mặt trên hầu hết các 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à tốc độ xử lý. Nhưng nó cũng có các nhược điể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ư xử lý logic.
4. Bash là gì?
Bash bắt đầu như là một bản triển khai tương thích với Sh (sh-compatible implementation), nó kế thừa 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 gian nó đã có được rất nhiều tiện ích mở rộng, một số tiện ích mở rộng của nó đã thay đổi hành vi của chuẩn POSIX shell scripts.
Bash có hổ trợ chuyển đổi –posix, giúp cho nó tuân thủ theo chuẩn POSIX hơn (more POSIX-compliant).
5.Vậy SH = Bash hay không?
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:
- 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.
TẠM KẾT.
Như vậy, thông qua bài viết dưới đây Khotenmien.vn đã giới thiệu đến bạn đọc những thông tin cần thiết và tổng quát nhất về Bash Shell. Qua bài viết này, chúng tôi hy vọng đã giúp bạn hiểu chính xác Bash Shell là gì? Sự khác nhau giữa SH và Bash là gì?. từ đó giúp ích được cho công việc của các bạn ,chúc các bạn trở thành những nhà lập trình thông thái!
Thu Uyên – Tổng hợp, chỉnh sửa.