ดังที่คนอื่น ๆ อธิบายไว้ไดเรกทอรีจะถูกเปลี่ยนในกระบวนการลูกของสคริปต์ของคุณไม่ใช่ในกระบวนการเทอร์มินัลที่สคริปต์ถูกเรียก หลังจากกระบวนการลูกตายคุณจะกลับมาที่เครื่องซึ่งถูกทิ้งไว้
ทางเลือกหลายประการ:
1. ลิงก์สัญลักษณ์
วาง symlink ไว้ในบ้านของคุณในเส้นทางที่ยาวซึ่งคุณต้องการเข้าถึงได้ง่าย
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
จากนั้นเข้าถึงไดเรกทอรีด้วย:
$ cd ~/pathABC
2. นามแฝง
ใส่นามแฝงใน ~ / .bashrc ของคุณ:
alias pathABC="cd /home/alex/Documents/A/B/C"
(จากที่นี่ )
3. ฟังก์ชั่น
สร้างฟังก์ชั่นที่เปลี่ยนไดเรกทอรีฟังก์ชั่นจะทำงานในกระบวนการของเทอร์มินัลของคุณและจากนั้นสามารถเปลี่ยนไดเรกทอรี
(จากที่นี่ )
4. หลีกเลี่ยงการวิ่งเป็นเด็ก
แหล่งสคริปต์ของคุณแทนที่จะเรียกใช้ การจัดหา (ทำโดย.
หรือsource
) ทำให้สคริปต์ทำงานในเชลล์เดียวกันแทนที่จะทำงานในเชลล์ย่อยของตัวเอง
$ . ./pathABC
(จากที่นี่และที่นี่ )
5. vars สามารถซีดี
ตั้งค่าcdable_vars
ตัวเลือกในของคุณ~/.bashrc
และสร้างตัวแปรสภาพแวดล้อมไปยังไดเรกทอรี:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
จากนั้นคุณสามารถใช้ cd pathABC
(จากที่นี่ )