Bước tới nội dung

Bash

Bách khoa toàn thư mở Wikipedia
Bash
Thiết kế bởiBrian Fox
Phát hành lần đầu8 tháng 6 năm 1989; 35 năm trước (1989-06-08)
Kho mã nguồn
Viết bằngC
Hệ điều hành
Nền tảngGNU
Ngôn ngữ có sẵnĐa ngôn ngữ (gettext)
Thể loạiUnix shell, ngôn ngữ dòng lệnh
Giấy phépGPLv3+[5]
Websitewww.gnu.org/software/bash/

Bash là một Unix shellngôn ngữ dòng lệnh được viết bởi Brian Fox cho Dự án GNU như là một phần mềm thay thế miễn phí cho Bourne shell.[6][7] Được phát hành lần đầu tiên vào năm 1989,[8] nó đã được phân phối rộng rãi như là login shell mặc định cho hầu hết các bản phân phối LinuxmacOS. Một phiên bản cũng có sẵn cho Windows 10.[9] Nó cũng là user shell mặc định trong Solaris 11.[10]

Bash là một bộ xử lý dòng lệnh thường chạy trong cửa sổ văn bản nơi người dùng gõ các lệnh thực thi. Bash cũng có thể đọc và thực thi các lệnh từ một file, được gọi là shell script. Giống như tất cả Unix shell, nó hỗ trợ tên file toàn cục (khớp ký tự đại diện), piping, here documents, command substitution, biến, và cấu trúc điều khiển để kiểm tra điều kiện và vòng lặp. Các từ khóa, cú pháp và các tính năng cơ bản khác của ngôn ngữ đều được sao chép từ sh. Các tính năng khác, ví dụ, lịch sử, được sao chép từ csh và ksh. Bash là một shell tương thích POSIX, nhưng có một số phần mở rộng.

Tên của shell là viết tắt của Bourne-again shell, một cách chơi chữ với tên của Bourne shell mà nó thay thế[11] and on the common term "born again".[12][13]

Một lỗ hổng bảo mật trong Bash có từ phiên bản 1.03 (tháng 8/1989),[14] được đặt tên là Shellshock, được phát hiện vào đầu tháng 9 năm 2014 và nhanh chóng dẫn đến một loạt các cuộc tấn công trên Internet.[15][16][17] Các bản vá để sửa lỗi đã được cung cấp ngay sau khi lỗi được tìm thấy.

Vào tháng 6 năm 2019, Apple đã thông báo rằng macOS Catalina (10.15) sẽ sử dụng Zsh làm shell mặc định, thay thế Bash.[18][19]

Lịch sử

[sửa | sửa mã nguồn]

Brian Fox bắt đầu lập trình Bash ngày 10/1/1988[20] sau khi Richard Stallman trở nên không hài lòng với sự thiếu tiến bộ của nhà phát triển trước đó.[6] Stallman và Free Software Foundation (FSF) xem một shell miễn phí có thể chạy các shell script hiện có nên mang tính chiến lược đối với một hệ thống hoàn toàn tự do được xây dựng từ mã BSD và GNU, đây là một trong số ít các dự án mà họ tự tài trợ, với Fox đảm nhận công việc của một nhân viên của FSF.[6][21] Fox phát hành bản beta của Bash, phiên bản.99 ngày 8/6/1989[8] và vẫn là người duy trì chính cho đến khoảng giữa năm 1992[22] and mid-1994,[23] khi ông ấy bị sa thải khỏi FSF[24] và trách nhiệm của ông đã được chuyển sang một người đóng góp sớm khác, Chet Ramey.[25][26][27]

Từ đó, Bash trở thành shell phổ biến nhất trong cộng đồng Linux, trở thành shell tương tác mặc định trên các bản phân phối khác nhau của hệ đièu hành này (mặc dù Almquist shell có thể là scripting shell mặc định) và trên macOS của Apple.[28][29][30] Bash cũng được port đến Microsoft Windows được phân phối cùng CygwinMinGW, tới DOS bởi dự án DJGPP, đến Novell NetWare và tới Android thông qua các ứng dụng mô phỏng thiết bị đầu cuối khác nhau.

Tháng 9/2014, Stéphane Chazelas, một chuyên gia về Unix/Linux,[31] phát hiện một lỗi bảo mật trong chương trình. Lỗi này, lần đầu tiên được tiết lộ vào ngày 24 tháng 9, được đặt tên là Shellshock và gán các số CVE-2014-6271, CVE-2014-6277[32]CVE-2014-7169. Lỗi này được coi là nghiêm trọng, vì các tập lệnh CGI sử dụng Bash có thể dễ bị tấn công, cho phép thực thi mã tùy ý. Lỗi này có liên quan đến cách Bash định nghĩa hàm cho các lớp con thông qua các biến môi trường.[33]

Chú thích

[sửa | sửa mã nguồn]
  1. ^ “Bash FAQ, version 4.14”. Bản gốc lưu trữ ngày 1 tháng 9 năm 2018. Truy cập ngày 9 tháng 4 năm 2016.
  2. ^ “Why does Apple ship bash 3.2?”. apple.stackexchange.com.
  3. ^ “Missing source code - GPL compliance? · Issue #107 · Microsoft/WSL”. GitHub.
  4. ^ “GNU Bash”. Softpedia. SoftNews. Truy cập ngày 9 tháng 4 năm 2016.
  5. ^ GNU Project. “README file”. Bash is free software, distributed under the terms of the [GNU] General Public License as published by the Free Software Foundation, version 3 of the License (or any later version).
  6. ^ a b c Richard Stallman (forwarded with comments by Chet Ramey) (ngày 10 tháng 2 năm 1988). “GNU + BSD = ?”. Truy cập ngày 22 tháng 3 năm 2011. For a year and a half, the GNU shell was "just about done". The author made repeated promises to deliver what he had done, and never kept them. Finally I could no longer believe he would ever deliver anything. So Foundation staff member Brian Fox is now implementing an imitation of the Bourne shell. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Đã bỏ qua tham số không rõ |message-id= (trợ giúp)
  7. ^ Hamilton, Naomi (ngày 30 tháng 5 năm 2008), “The A-Z of Programming Languages: BASH/Bourne-Again Shell”, Computerworld: 2, Bản gốc lưu trữ ngày 6 tháng 7 năm 2011, truy cập ngày 27 tháng 8 năm 2019, When Richard Stallman decided to create a full replacement for the then-encumbered Unix systems, he knew that he would eventually have to have replacements for all of the common utilities, especially the standard shell, and those replacements would have to have acceptable licensing.
  8. ^ a b Brian Fox (forwarded by Leonard H. Tower Jr.) (ngày 8 tháng 6 năm 1989). “Bash is in beta release!”. Truy cập ngày 28 tháng 10 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp)
  9. ^ “How to install Bash shell command-line tool on Windows 10”. ngày 28 tháng 9 năm 2016.
  10. ^ “User Environment Feature Changes”. Oracle.
  11. ^ C Programming by Al Stevens, Dr. Dobb's Journal, ngày 1 tháng 7 năm 2001
  12. ^ Richard Stallman (ngày 12 tháng 11 năm 2010). “About the GNU Project”. Free Software Foundation. Lưu trữ bản gốc ngày 24 tháng 4 năm 2011. Truy cập ngày 13 tháng 3 năm 2011. "Bourne Again Shell" is a play on the name Bourne Shell, which was the usual shell on Unix.
  13. ^ Gattol, Markus (ngày 13 tháng 3 năm 2011), Bourne-again Shell, Bản gốc lưu trữ ngày 9 tháng 3 năm 2011, truy cập ngày 13 tháng 3 năm 2011, The name is a pun on the name of the Bourne shell (sh), an early and important Unix shell written by Stephen Bourne and distributed with Version 7 Unix circa 1978, and the concept of being "born again".
  14. ^ Chazelas, Stephane (ngày 4 tháng 10 năm 2014). “oss-sec mailing list archives”. Seclists.org. Truy cập ngày 4 tháng 10 năm 2014.
  15. ^ Leyden, John (ngày 24 tháng 9 năm 2014). “Patch Bash NOW: 'Shell Shock' bug blasts OS X, Linux systems wide open”. The Register. Truy cập ngày 25 tháng 9 năm 2014.
  16. ^ Perlroth, Nicole (ngày 25 tháng 9 năm 2014). “Security Experts Expect 'Shellshock' Software Bug in Bash to Be Significant”. The New York Times. Truy cập ngày 25 tháng 9 năm 2014.
  17. ^ Seltzer, Larry (ngày 29 tháng 9 năm 2014). “Shellshock makes Heartbleed look insignificant”. ZDNet. Bản gốc lưu trữ ngày 14 tháng 5 năm 2016.
  18. ^ “Use zsh as the default shell on your Mac - Apple Support”. Truy cập ngày 1 tháng 7 năm 2019.
  19. ^ Warren, Tom (ngày 4 tháng 6 năm 2019). “Apple replaces bash with zsh as the default shell in macOS Catalina”. The Verge. Truy cập ngày 13 tháng 6 năm 2019.
  20. ^ Brian Fox (ngày 29 tháng 8 năm 1996), shell.c, Free Software Foundation, Birthdate: Sunday, January 10th, 1988. Initial author: Brian Fox
  21. ^ Richard Stallman (ngày 3 tháng 10 năm 2010). “About the GNU Project”. Free Software Foundation. Lưu trữ bản gốc ngày 24 tháng 4 năm 2011. Truy cập ngày 21 tháng 3 năm 2011. Free Software Foundation employees have written and maintained a number of GNU software packages. Two notable ones are the C library and the shell.... We funded development of these programs because the GNU Project was not just about tools or a development environment. Our goal was a complete operating system, and these programs were needed for that goal.
  22. ^ len (g...@prep.ai.mit.edu) (ngày 20 tháng 4 năm 1993). “January 1993 GNU's Bulletin”. Truy cập ngày 28 tháng 10 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Đã bỏ qua tham số không rõ |message-id= (trợ giúp)
  23. ^ Ramey, Chet (ngày 1 tháng 8 năm 1994). “Bash - the GNU shell (Reflections and Lessons Learned)”. Linux Journal. Lưu trữ bản gốc ngày 5 tháng 12 năm 2008. Truy cập ngày 13 tháng 11 năm 2008.
  24. ^ Chet Ramey (ngày 31 tháng 10 năm 2010), Dates in your Computerworld interview, truy cập ngày 31 tháng 10 năm 2010
  25. ^ Chet Ramey (ngày 12 tháng 6 năm 1989). “Bash 0.99 fixes & improvements”. Truy cập ngày 1 tháng 11 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Chú thích có tham số trống không rõ: |message-id= (trợ giúp)
  26. ^ Chet Ramey (ngày 24 tháng 7 năm 1989). “Some bash-1.02 fixes”. Truy cập ngày 30 tháng 10 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Chú thích có tham số trống không rõ: |message-id= (trợ giúp)
  27. ^ Brian Fox (ngày 2 tháng 3 năm 1990). “Availability of bash 1.05”. Truy cập ngày 30 tháng 10 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Chú thích có tham số trống không rõ: |message-id= (trợ giúp)
  28. ^ Foster-Johnson, Eric; Welch, John C.; Anderson, Micah (tháng 4 năm 2005). Beginning Shell Scripting. John Wiley & Sons, Inc. tr. 6. ISBN 978-0-7645-9791-6. Truy cập ngày 6 tháng 6 năm 2016. Bash is by far the most popular shell and forms the default shell on Linux and Mac OSX systems.
  29. ^ Danesh, Arman; Jang, Michael (tháng 2 năm 2006). Mastering Linux. John Wiley & Sons, Inc. tr. 363. ISBN 978-0-7821-5277-7. Truy cập ngày 6 tháng 6 năm 2016. The Bourne Again Shell (bash) is the most common shell installed with Linux distributions.
  30. ^ Bresnahan, Christine; Blum, Richard (tháng 4 năm 2015). CompTIA Linux+ Powered by Linux Professional Institute Study Guide: Exam LX0-103 and Exam LX0-104 (ấn bản thứ 3). John Wiley & Sons, Inc. tr. 5. ISBN 978-1-119-02122-3. Truy cập ngày 6 tháng 6 năm 2016. In Linux, most users run bash because it is the most popular shell.
  31. ^ Juliana, Cino (ngày 10 tháng 6 năm 2017). “Linux bash exit status and how to set exit status in bash - Techolac”. Bản gốc lưu trữ ngày 21 tháng 6 năm 2019. Truy cập ngày 21 tháng 6 năm 2019.
  32. ^ “CVE-2014-6277”. cve.mitre.org.
  33. ^ Huzaifa Sidhpurwala (ngày 24 tháng 9 năm 2014). “Bash specially-crafted environment variables code injection attack”. Red Hat.

Bản mẫu:Unix shells