เมื่อฉันเปลี่ยนไดเรกทอรีการทำงานในสคริปต์และดำเนินการไดเรกทอรีการทำงานจะเปลี่ยนเส้นทางที่ระบุในขณะที่อยู่ในสคริปต์เท่านั้น


0

เมื่อฉันเปลี่ยนไดเรกทอรีการทำงานในสคริปต์และดำเนินการไดเรกทอรีการทำงานจะเปลี่ยนเส้นทางที่ระบุในขณะที่อยู่ในสคริปต์เท่านั้น นี่คือสคริปต์ของฉัน: (นี่คือเพื่อให้แน่ใจว่ามันเปลี่ยนไดเรกทอรีจริงหรือไม่)
#!/bin/bash
cd /media/hard/drive/partitionX/
pwd

เมื่อฉันรันมันจะส่งคืนพา ธ ที่ระบุ แต่ไดเร็กทอรีการทำงานของฉันในเทอร์มินัลจะไม่เปลี่ยนแปลง ฉันจะเปลี่ยนไดเรกทอรีการทำงานใน terminal ของฉันผ่านสคริปต์ได้อย่างไร


1
คุณต้องsourceสคริปต์ ดูคำถามที่คล้ายกันนี้
aguslr

คำตอบ:


4

นี่เป็นปกติ. "ปัจจุบัน" หรือ "ทำงาน" ไดเรกทอรีเป็นตัวแปรต่อกระบวนการและกระบวนการที่สามารถเปลี่ยนเฉพาะของตัวเองไดเรกทอรีการทำงาน สคริปต์แบบสแตนด์อโลนจะดำเนินการเป็นกระบวนการเปลือกแยกต่างหากและไม่สามารถส่งผลกระทบต่อเปลือกแม่ (ในความเป็นจริงผู้ปกครองอาจจะไม่เสมอเป็นเปลือก)

คุณจะต้องใช้คุณสมบัติภายในเชลล์ของคุณเช่น:

  • ฟังก์ชั่นเปลือก:

    mycd() {
        cd /media/hard/drive/partitionX/;
        pwd;
    }
  • นามแฝงเปลือก:

    alias mycd='cd /media/hard/drive/partitionX; pwd'
  • "source" สคริปต์แทนการใช้งานมัน:

    . mycd.sh

หากเป้าหมายหลักของคุณคือการสร้างทางลัดไปยังบางไดเรกทอรีคุณสามารถใช้:

  • symlink ในตำแหน่งที่สะดวกกว่า:

    ln -s /media/hard/drive/partitionX ~/partX
    cd ~/partX
  • ตัวแปร ($ mydir):

    mydir=/media/hard/drive
    cd $mydir
  • คุณสมบัติ $ CDPATH:

    CDPATH=".:/media/hard/drive"
    cd partitionX

ว้าวขอบคุณมาก! นี่เป็นประโยชน์อย่างมาก! ขอบคุณสำหรับคำตอบอย่างละเอียดพร้อมความเป็นไปได้ทั้งหมด!
Dash Conroy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.