ฉันมีไดเรกทอรีที่ฉันเรียกใช้โปรแกรมมา
/ usr / bin / my-dir
ฉันต้องเรียกใช้โปรแกรมจากภายในไดเรกทอรีดังนั้นฉันต้องไป cd / usr / bin / my-dir ./my-program
ฉันมีสคริปต์ที่จากเครื่องรีโมตอัพเดตโปรแกรมของฉันเช่นนี้: rm -rf / usr / bin / my-dir mv my-program / usr / bin / my-dir
ปัญหาคือเมื่อฉันได้ ssh ลงในเครื่องและอยู่ในไดเรกทอรี / usr / bin / my-dir สคริปต์ล้มเหลวเนื่องจากไม่สามารถดำเนินการ rm -rf / usr / bin / my-dir ได้สำเร็จ (จะลบเนื้อหาทั้งหมด แต่ไม่ใช่ไดเรกทอรี)
มีวิธีแก้ไขปัญหานี้ไหม (เช่นวิธีการกำหนดค่าเชลล์เพื่ออนุญาตให้ลบไดเรกทอรีในขณะที่ฉันอยู่ในนั้น) หรือวิธีแก้ปัญหาอื่น ๆ ? ขณะนี้ฉัน cd ออกจากไดเรกทอรีให้รันสคริปต์แล้ว cd กลับเข้าไปในไดเรกทอรี แต่ฉันต้องทำอย่างนี้หลายร้อยครั้งต่อวัน - ต้องมีวิธีที่มีประสิทธิภาพมากกว่านี้
rmdir /usr/bin/my-dir
เพื่อลบ dir หลังจากที่คุณได้ rm -rf'ed rmdir จะทำงานในไดเรกทอรีปัจจุบันและไม่เปลี่ยนพรอมต์ดังนั้นการแจ้งจะชี้ไปยังตำแหน่งที่ไม่มีอยู่ชั่วคราวดังนั้นเมื่อคุณสร้าง dir ใหม่มันจะยังคงชี้ไปยังตำแหน่งที่ถูกต้อง
cd ~;
ที่ด้านหน้าของสคริปต์อัพเดตหรือไม่ คุณสามารถใส่cd /usr/bin/my-dir
ท้ายได้ดังนั้นหลังจากที่คุณกระโดดกลับ คุณกำลังเรียกใช้คำสั่งเหล่านี้ทั้งหมดในสคริปต์ใช่ไหม? ถ้าไม่ลองพิจารณาดูสิว่าคุณทำอย่างนี้หลายร้อยครั้งต่อวัน