Chương 5
Bash
Tốt gỗ hơn tốt nước sơn
– ca dao tục ngữ Việt Nam
Trong phần này chúng ta sẽ đề cập đến vấn đề làm việc với Linux ở chế độ text, hay
còn được gọi là console hoặc terminal. Những người dùng Linux mới (newbie) thường nghĩ
sẽ chẳng bao giờ làm việc ở chế độ này, vì đã có giao diện đồ họa. Tuy nhiên đây là một ý
kiến sai lầm, bởi vì rất nhiều công việc có thể thực hiện nhanh và thuận tiện trong chế độ
này hơn là sử dụng giao diện đồ họa. Và dù sao thì chế độ text của HĐH Linux không phải
là chế độ text một tiến trình của MS-DOS. Vì Linux là HĐH đa tiến trình, nên ngay trong chế
độ text đã có khả năng làm việc trong vài cửa sổ. Và để soạn thảo một tập tin văn bản không
nhất thiết phải chạy các trình soạn thảo lớn và chậm chạp (đặc biệt trên các máy có cấu
hình phần cứng thấp) của môi trường đồ họa.
5.1
Hệ vỏ là gì?
Chúng ta thường nói “người dùng làm việc với hệ điều hành”. Điều này không
hoàn toàn đúng, vì trên thực tế “liên hệ” với người dùng được thực hiện bởi một
chương trình đặc biệt. Có hai dạng của chương trình đã đề cập - hệ vỏ, hay shell,
để làm việc trong chế độ text (giao diện dòng lệnh) và giao diện đồ họa GUI
(Graphical User Interface), thực hiện “liên hệ” với người dùng trong môi trường
đồ họa. Cần nói ngay rằng, bất kỳ chương trình nào trong Linux có thể khởi động
từ dòng lệnh của hệ vỏ (nếu máy chủ X đã chạy), cũng như qua giao diện đồ họa.
Chạy chương trình từ dòng lệnh của hệ vỏ tương đương với việc nháy (đúp) chuột
lên biểu tượng của chương trình trong GUI. Đưa các tham số cho chương trình
trên dòng lệnh tương đương với việc chúng ta kéo và thả cái gì đó lên biểu tượng
chương trình trong môi trường đồ họa. Nhưng mặt khác, một số chương trình
không thể chạy ở GUI và chỉ có thể thực hiện từ dòng lệnh. Nói ngoài lề một
chút, tên gọi “hệ vỏ” bị phản đối rất nhiều. Theo ý kiến của một số chuyên gia
ngôn ngữ cũng như chuyên gia Linux thì nên gọi chương trình này một cách đúng
hơn là “trình xử lý lệnh” hay “trình biên dịch lệnh”. Tuy nhiên, tên gọi “hệ vỏ”
(shell) được dùng cho các chương trình dùng để biên dịch lệnh trong chế độ text
trên mọi hệ thống UNIX. Trên các hệ thống UNIX đầu tiên có một chương trình,
gọi là sh, viết tắt của shell. Sau đó, vài biến thể của sh được phát triển và làm
tốt hơn, trong đó có Bourne shell - phiên bản mở rộng của sh, viết bởi Steve