ในทั้ง bash และ zsh ค่าของPS1ไม่ถูกใช้เป็นพร้อมต์ตามที่เป็นมันผ่านการขยายบางส่วน กฎระเบียบที่แตกต่างกันสำหรับทั้งสองหอย แต่ในทั้งสองกรณีหนึ่งของขั้นตอนคือการดำเนินการ“ดอลลาร์” ขยาย (เปลี่ยนตัวตัวแปรแทนคำสั่งและการประเมินผลทางคณิตศาสตร์) มีไวยากรณ์เช่นเดียวกับในไวยากรณ์เปลือกปกติ ( , , หรือ$VARIABLE${VARIABLE}$(COMMAND)`COMMAND` , , ) .$((EXPRESSION))$[EXPRESSION]
- ในทุบตีการขยายตัวของเงินดอลลาร์จะเปิดตามค่าเริ่มต้น แต่สามารถปิดได้ด้วย
shopt -u promptvarsแต่สามารถปิดได้ด้วย
- ใน zsh การขยายดอลลาร์จะปิดตามค่าเริ่มต้น แต่หลาย ๆ คน (และกรอบการกำหนดค่าส่วนใหญ่ที่คุณจะพบบนเว็บ) เปิดใช้งานด้วย
setopt prompt_substเปิดด้วย
เมื่อเปิดใช้งานการขยายดอลลาร์ในพรอมต์ให้PS1='$(pwd)'ตั้งค่าPS1เป็น 6 ตัวอักษร$(pwd)และทำให้เกิด$(pwd)การแทนที่ดังนั้นจึงpwdต้องดำเนินการคำสั่งทุกครั้งที่เชลล์แสดงพรอมต์ใหม่ ในทางกลับกันการPS1=$(pwd)ตั้งค่าPS1เป็นไดเรกทอรีการทำงานปัจจุบันของเชลล์ในเวลาใดก็ได้ ถ้าคุณได้การขยายตัวของเงินดอลลาร์ปิดแล้วจะทำให้เกิดพร้อมที่จะเป็นสตริงตัวอักษรPS1='$(pwd)'$(pwd)
โปรดทราบว่ามีวิธีที่สะดวกกว่าในการรับไดเร็กทอรีการทำงานในพร้อมต์:
- ในทุบตีด้วยการใช้แบ็กสแลชเช่น
\wซึ่ง abbreviates ไดเรกทอรีบ้านของคุณไปและอาจถูกตัดออกจากการตั้งค่า~PROMPT_DIRTRIM
- ใน zsh โดยมีเปอร์เซนต์การหลบหนีเช่น
%/หรือ%~ (%/เป็นเช่นเดียวกับ$PWD, %~abbreviates ไดเรกทอรีบ้าน) ซึ่งจะมีการตั้งค่าการตัดแต่ง
- ในเชลล์ (และเชลล์สไตล์บอร์นอื่น ๆ )
$PWDเทียบเท่ากับ$(pwd): คุณไม่จำเป็นต้องเรียกใช้กระบวนการย่อยเพื่อรับไดเรกทอรีการทำงานปัจจุบัน