โดยปกติ Shell ใน Linux จะมีการตั้งค่าในการแสดงผลต่างๆไว้ ทำให้เวลาเข้าใช้งานผู้ใช้งานสามารถทราบรายละเอียดของการทำงานต่างๆ ณ​ ปัจจุบันของตัวผู้ใช้งานเองได้ โดยตัวแปรที่เก็บและกำหนดลักษณะการแสดงผลต่างๆของ Shell มีดังนี้

  • PS1 – เป็นตัวแปรที่เก็บค่าของ default prompt (ด้านซ้ายสุดที่จะขึ้นทุกครั้งที่อยู่ในงาน Shell)
  • PS2 – เป็นตัวแปรที่เก็บค่าของ prompt เมื่อมีการใส่คำสั่งหลายๆบรรทัด
  • PS3 – เป็นตัวแปรที่จะใข้งานเมื่อมีการเลือกคำสั่งตอนใช้งาน Bash Script
  • PS4 – เป็นตัวแปรเก็บค่าการแสดงผล Bash script แต่ละบรรทัดตอนทำ Debug Mode

1. แก้ไข Bash Prompt PS1
อย่างที่บอกไปแล้วว่า PS1 เป็น ตัวแปรที่เก็บค่าของ default prompt เรามาลองดูกันว่า default เป็นยังไง

จะเห็นว่ามีการใส่ “debian_chroot”  หมายถึงว่าถ้ามีการเปลี่ยน root environment จะมีการเตือนด้วย โดยในส่วนของ PS1 นั้นเราสามารถใส่ option ต่างๆได้ดังนี้

ทีนี้ถ้าผมแก้ใหม่โดยการให้แสดงเวลาในการใช้งานของ prompt shell ด้วย โดยเพิ่มเวลาเอาไปไว้ท้ายสุดของ prompt ก็ทำการ เพิ่ม \t เข้าไปด้านท้ายสุด จะได้เป็น

หากต้องการแก้แบบถาวรเราสามารถทำได้โดยการแก้ .bashrc ของแต่ละ user

2. แก้ไข continuation prompt shell ใน PS2

อย่างที่กล่าวไปแล้วว่า PS2 เป็นตัวแปรที่เก็บค่าของ prompt เมื่อมีการใส่คำสั่งหลายๆบรรทัด ซึ่งโดยปกติถ้าเราพิมพ์คำสั่งเป็น

โดย default PS2 จะกำหนดเป็น > ทำให้เวลาแสดงผลมีค่าเป็น

ทีนี้หากต้องการเปลี่ยนให้เป็น “continue>” จะใช้คำสั่งเป็น

3. เปลี่ยนการเลือกคำสั่งของ Bash Script โดยใช้ PS3

หากเราเขียน shell script ให้มีการรับ input จาก user

จะเห็นว่าตอนที่รอรับ input จาก user จะมีการแสดง “#?” ขึ้นมา หากเราต้องการเปลี่ยนคำนี้เป็น “choice: ” เราสามารถกำหนดได้ผ่าน PS3 เป็น

4.  กำหนดการแสดงผลแต่ละบรรทัดที่ Debug ใน Shell Script ด้วย PS4

โดยปกติการ debug ใน Bash script เราสามารถที่จะใช้ echo เองในแต่ละขั้นตอนได้ แต่เพื่อให้สะดวกกว่านั้น เราสามารถใช้ PS4 ซึ่งเป็นตัวแปรเก็บค่าการแสดงผล Bash script แต่ละบรรทัดตอนทำ Debug Mode แทนได้ โดยปกติ default ของ PS4 คือ “+” หากเราต้องการกำหนดเป็น “[script line->:] ” ใช้คำสั่งเป็น

Source:: Linoxide