ในทั้ง 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)
: คุณไม่จำเป็นต้องเรียกใช้กระบวนการย่อยเพื่อรับไดเรกทอรีการทำงานปัจจุบัน