คำตอบ:
คุณสามารถใช้ตัวแปรสภาพแวดล้อม 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
ในสคริปของคุณ ..