Hôm nay, Bash là shell mặc định trong hầu hết (nếu không phải tất cả) bản phân phối Linux hiện đại. Tuy nhiên, bạn có thể nhận thấy màu văn bản trong terminal và nội dung prompt khác nhau giữa các distro.
Đề xuất đọc: 5 Shell mã nguồn mở phổ biến nhất cho Linux
Nếu bạn thắc mắc cách tùy chỉnh để dễ truy cập hoặc chỉ vì thích, hãy đọc tiếp – bài này sẽ giải thích cách làm.
Biến môi trường PS1 của Bash
Dấu nhắc lệnh và giao diện terminal được điều khiển bởi biến môi trường tên PS1. Theo trang man Bash, PS1 đại diện cho chuỗi prompt chính hiển thị khi shell sẵn sàng đọc lệnh.
Nội dung cho phép trong PS1 bao gồm một số ký tự đặc biệt thoát backslash có ý nghĩa liệt kê trong phần PROMPTING của man page.
Để minh họa, hiển thị nội dung hiện tại của PS1 trên hệ thống (có thể khác ở trường hợp của bạn):
$ echo $PS1 [\u@\h \W]\$
Chúng ta sẽ giải thích cách tùy chỉnh PS1 theo nhu cầu.
Tùy chỉnh định dạng PS1
Theo phần PROMPTING trong man page, ý nghĩa các ký tự đặc biệt:
\u:tên người dùng hiện tại.\h:tên máy chủ đến dấu chấm (.) đầu tiên trong Fully-Qualified Domain Name.\W:tên cơ sở của thư mục làm việc hiện tại, với $HOME viết tắt bằng dấu ngã (~).\$:Nếu user hiện tại là root, hiển thị #, ngược lại $.
Ví dụ, có thể thêm \! để hiển thị số lịch sử lệnh hiện tại, hoặc \H để hiển thị FQDN thay vì tên máy ngắn.
Trong ví dụ sau nhập cả hai vào môi trường hiện tại bằng lệnh:
PS1="[\u@\H \W \!]\$"
Khi nhấn Enter, nội dung prompt thay đổi như hình. So sánh prompt trước và sau lệnh trên:

Bây giờ tiến xa hơn: thay đổi màu user và hostname trong prompt – cả văn bản và nền bao quanh.
Thực tế có thể tùy chỉnh 3 khía cạnh của prompt:
| Định dạng văn bản | Màu chữ (Foreground) | Màu nền (Background) |
|---|---|---|
| 0: bình thường | 30: Đen | 40: Đen |
| 1: in đậm | 31: Đỏ | 41: Đỏ |
| 4: gạch dưới | 32: Xanh lá | 42: Xanh lá |
| 33: Vàng | 43: Vàng | |
| 34: Xanh dương | 44: Xanh dương | |
| 35: Tím | 45: Tím | |
| 36: Cyan | 46: Cyan | |
| 37: Trắng | 47: Trắng |
Dùng ký tự đặc biệt \e ở đầu và m ở cuối để chỉ chuỗi màu.
Trong chuỗi này, ba giá trị (nền, định dạng, màu chữ) cách nhau bởi dấu phẩy (nếu không cho giá trị thì mặc định).
Đề xuất đọc: Học Bash Shell Scripting trên Linux
Vì dải giá trị khác nhau, không quan trọng thứ tự chỉ định (nền, định dạng, hoặc màu chữ).
Ví dụ, PS1 sau khiến prompt hiển thị chữ vàng gạch dưới trên nền đỏ:
PS1="\e[41;4;33m[\u@\h \W]\$ "

Tùy chỉnh này chỉ tồn tại phiên làm việc hiện tại. Đóng terminal hoặc thoát phiên, thay đổi mất.
Để vĩnh viễn, thêm dòng sau vào ~/.bashrc hoặc ~/.bash_profile tùy bản phân phối:
PS1="\e[41;4;33m[\u@\h \W]\$ "
Tự do thử nghiệm màu để tìm phù hợp nhất.
Tóm tắt
Bài này giải thích cách tùy chỉnh màu và nội dung Bash prompt. Nếu có câu hỏi hoặc gợi ý, dùng form bình luận bên dưới. Chúng tôi mong chờ phản hồi!