Biến PS1 Là Gì? Các Biến Của PS1 Trong Linux

Trong các biến môi trường của hệ thống dựa trên Linux và Unix là một tập hợp các giá trị động được đặt tên, được lưu trữ trong hệ thống được sử dụng bởi các ứng dụng được khởi chạy trong shell hoặc subshells. Nói một cách đơn giản, một biến môi trường là một biến có tên và giá trị liên quan.

Biến môi trường cho phép bạn tùy chỉnh cách hệ thống hoạt động và hoạt động của các ứng dụng trên hệ thống. Ví dụ: biến môi trường có thể lưu trữ thông tin về trình soạn thảo văn bản hoặc trình duyệt mặc định , đường dẫn đến các tệp thực thi hoặc cài đặt bố cục bàn phím và hệ thống.

1. Biến PS1 là gì?

PS (Prompt Statement) sử dụng để tùy chỉnh chuỗi nhắc của bạn trong cửa sổ đầu cuối để hiển thị thông tin bạn muốn. PS1 là biến chính điều khiển dấu nhắc dòng lệnh của bạn.

Như ta đã thấy ở hình trên thì chuỗi nhắc của mình  có định dạng là giờ-tài khoản@tên máy chủ. Hoặc đa phần khi ta cài đặt mới hệ điều hành Linux thì đại đa số chuỗi nhắc của mình sẽ có dạng như sau:

Bash special character Bash special character explanation Bash special character Bash special character explanation

Trông sẽ rất là nhàm chán và không có độ tuỳ biến cao nếu ta sử dụng chuỗi đó trong một thời gian dài.

Vậy nên bài viết này mình sẽ hướng dẫn các bạn thay đổi chuỗi nhắc đó theo ý của mình.

2. Các biến (Escape Sequences) của PS1

Mặc định biến PS1 của mình có định dạng như sau:

[04:21:12][root@hoangkhangn ~]$ echo $PS1 

[\T][\u@\h \W]$

Giải thích:

  • \u: tên tài khoản bạn đang sử dụng.
  • \h: tên máy chủ của bạn.
  • \W: thư mục cuối cùng trong thư mục bạn đang làm việc hiện tại (basename of the current working directory).
  • \T: Giờ-phút-giây theo định dạng 12 giờ.

Ngoài ra chúng ta còn có các biến như sau (mình sẽ dịch các biến có thể dịch sang Tiếng Việt, còn những biến giải thích có hơi khó dịch thì mình sẽ để nguyên gốc ở dạng Tiếng Anh nhé.)

Bash special character Bash special character explanation Bash special character Bash special character explanation
\\a an ASCII bell character (07) \\d Hiển thị ngày tháng theo định dạng (thứ-ngày-tháng)
\\] end a sequence of non-printing characters \\e an ASCII escape character (033)
\\h Hiển thị tên máy chủ của bạn từ đầu cho đến dấu “.” đầu tiên. \\H Hiển thị đầy đủ tên máy chủ của bạn.
\\j the number of jobs currently managed by the shell \\l the basename of the shell’s terminal device name
\\n In ra thêm dòng mới. \\r carriage return
\\s the name of the shell, the basename of $0 (the portion following the final
slash)
\\t the current time in 24-hour HH:MM:SS format
\\T the current time in 12-hour HH:MM:SS format \\@ the current time in 12-hour am/pm format
\\A the current time in 24-hour HH:MM format \\u the username of the current user
\\v the version of bash (e.g., 2.00) \\V the release of bash, version + patchelvel (e.g., 2.00.0)
\\w the current working directory \\W the basename of the current working directory
\\! the history number of this command \\# the command number of this command
\\$ if the effective UID is 0, a #, otherwise a $ \\nnn the character corresponding to the octal number nnn
\\\\ a backslash \\[ begin a sequence of non-printing characters, which could be used to embed a
terminal control sequence into the prompt

 3. Một số ví dụ

 Vì ở phần chuỗi nhắc PS1 này thì tính tuỳ biến của chúng ta rất là cao cho nên ở đây mình chỉ đưa ra một số ví dụ để cho các bạn hình dung ra cách hoạt động nó như thế nào rồi từ đó ta có thể tuỳ biến theo cách riêng của mình.

Vd1: Hiển thị thêm giờ-phút-giây theo định dạng 12 giờ:

[root@hoangkhangn ~]$ export PS1="[\T][\u@\h \W]\$ "

[03:57:12][root@hoangkhangn ~]$

Vd2: Hoặc ta không muốn hiển thị số giây mà chỉ muốn hiển thị giờ-phút theo định dạng 24 giờ

[03:59:23][root@hoangkhangn ~]$ export PS1="[\A][\u@\h \W]\$ "

[15:59][root@hoangkhangn ~]$

Vd3: Hiển thị số lượng jobs đang tồn tại trên hệ thống (kể cả chạy hay dừng)

[16:01][root@hoangkhangn ~]$ export PS1="[CurrentJobs:\j][\A][\u@\h \W]\$ "

[Current Jobs:0][16:02][root@hoangkhangn ~]$

Vd4: Hiển thị đầy đủ tên máy chủ của mình chứ và không bị giới hạn bởi dấu “.” đầu tiên (thay \h bằng \H):

[04:10:22][root@hoangkhangn ~]$ export PS1="[Current Jobs:\j][\A][\u@\H \W]\$ "

[Current Jobs:0][16:10][root@hoangkhangn.xyz ~]$
  • Lưu ý: Các thay đổi trên chỉ là tạm thời (có nghĩa là khi ta khởi động máy lại hoặc nếu ta sử dụng VPS thì khi ta tắt kết nối SSH và kết nối lại thì biến PS1 sẽ quay trở về trạng thái ban đầu).

4. Hướng dẫn sửa đổi biến PS1 và thay đổi vĩnh viễn

Đầu tiên ta phải in ra biến PS1 hiện tại của chúng ta và để nó vào một file hay ở đâu đó mà ta có thể sử dụng nó khi cần để quay trở về trạng thái như cũ:

[Current Jobs:0][16:15][root@hoangkhangn.xyz ~]$ echo $PS1

[Current Jobs:\j][\A][\u@\H \W]$

Khi đã lưu lại biến PS1 hiện tại thì ta tiến hành thay đổi vĩnh viễn biến đó bằng cách truy cập vào thư mục: /root/.bashrc đối với tài khoản root và /home/”tên tài khoản”/.bashrc đối với tài khoản ta tự tạo.

Như mình ở đây sẽ thực hiện trên chính tài khoản root của mình nên mình sẽ nhập lệnh:

[Current Jobs:2][16:17][root@hoangkhangn.xyz ~]$ vi /root/.bashrc
Ta thêm vào cuối file đoạn này:
PS1="biến tuỳ biến của bạn"

Như mình thì sẽ thêm vào như sau:

PS1="[\T][\u@\h \W]\$ "

Sau đó lưu lại.

Tiếp tục nhập lệnh sau để hệ thống nhận biến PS1 của mình:

[Current Jobs:3][16:21][root@hoangkhangn.xyz ~]$ source /root/.bashrc

[04:21:12][root@hoangkhangn ~]$

Chúc bạn thực hiện thành công!

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST

>> SERVER – COLOCATION – CDN

>> CLOUD – VPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

Was this article helpful?