คำตอบ:
คุณสามารถใช้ตัวแปรสภาพแวดล้อม PWD และ HOME: $PWDเป็นไดเรกทอรีการทำงานปัจจุบันในขณะที่$HOMEเป็นไดเรกทอรีบ้านของผู้ใช้ปัจจุบัน คุณสามารถนำหน้าคำสั่งที่เรียกใช้งานได้ในสคริปต์ของคุณโดย:
if [ "$PWD" != "$HOME" ]; then exit; fi
คุณสามารถเลือกที่จะเพิ่มรหัสข้อผิดพลาดในexitคำสั่งในกรณีที่การเรียกเชลล์ต้องการตรวจสอบความสำเร็จหรือความล้มเหลวของสคริปต์
อีกตัวแปรที่มีประโยชน์คือ OLDPWD: $OLDPWDเป็นไดเรกทอรีก่อนหน้าก่อนที่จะเปลี่ยนไดเรกทอรีล่าสุด คุณสามารถใช้สิ่งนี้เพื่อให้สคริปต์รันจากที่ใดก็ได้โดยล้อมรอบสคริปต์ด้วย:
cd "$HOME"
. . . . . .
cd "$OLDPWD"
นี่เป็นการสันนิษฐานว่าไม่มีการเปลี่ยนแปลงไดเรกทอรีอื่นในสคริปต์ ถ้าไม่ใช้ครั้งแรกและกลับไปINITPWD="$PWD" $INITPWDในความเป็นจริงในกรณีส่วนใหญ่สคริปต์จะทำงานใน subshell ดังนั้นการเปลี่ยนกลับไปยังไดเรกทอรีเดิมจะไม่จำเป็นเนื่องจากการเริ่มต้นcdจะไม่ส่งผลกระทบต่อเปลือกแม่
อาจใช้ที่จุดเริ่มต้นของสคริปต์: LOCATION = / path / to / script หาก ["PWD"! = "$ LOCATION"]; จากนั้น cd $ LOCATION
$0ในสคริปของคุณ ..