เพิ่มโฟลเดอร์สคริปต์ทุบตีเพื่อเส้นทาง?


16

ฉันมีสคริปต์ทุบตีในโฟลเดอร์แอปพลิเคชันที่ฉันต้องการใช้ราวกับว่ามันอยู่ในเส้นทางของฉัน หากพวกเขาเป็นแอพพลิเคชั่นตรงฉันแค่เพิ่มไดเรคทอรี่ไปที่ ~ / .bashrc แต่นี่คือสคริปต์

เช่น:

~/a_dir/another_dir/foo.sh
~/a_dir/another_dir/foo-gui.sh

มีวิธีดีในการตั้งค่าเส้นทางเพื่อให้ฉันสามารถใช้จากไดเรกทอรีใด ๆ

เช่น:

totally/different/path$ bash foo.sh

คุณจะไม่สามารถทำได้ด้วยbash foo.shแต่foo.shหลังจากได้รับอนุญาตจาก exec และวางไว้ใน $ PATH
elias

คำตอบ:


21

ใช่คุณสามารถเพิ่มไดเรกทอรีใด ๆ ลงในเส้นทางของระบบ วิธีหนึ่งในการทำเช่นนี้คือการอัพเดตคำจำกัดความ PATH (ตัวแปรสภาพแวดล้อม) คุณสามารถทำได้.bashrcโดยเพิ่มบรรทัดต่อไปนี้:

PATH="/your/script/dir:${PATH}"
export PATH

ฉันชอบที่จะเพิ่มสคริปต์ของฉันไปที่$HOME/.local/bin/(ซึ่งเป็นไดเรกทอรีที่ซ่อนอยู่) เพื่อให้บ้านของฉันยังคงสะอาดอยู่

source .bashrcไดเรกทอรีของคุณจะไม่ได้รับการแทรกลงในตัวแปรเส้นทางได้ทันทีถ้าคุณทำงาน

คุณสามารถเพิ่มหลายไดเรกทอรีลงในเส้นทางได้โปรดจำไว้ว่า โปรดศึกษาเอกสารทุบตีหากคุณไม่เข้าใจรหัส

วิธีการก่อนหน้านี้ใช้งานได้กับผู้ใช้ของคุณเท่านั้น หากคุณจำเป็นต้องเพิ่มไดเรกทอรีสคริปต์สำหรับผู้ใช้ทุกคนทำตามที่bodhi.zazen/usr/local/binและเพิ่มสคริปต์ของคุณจะ


การเพิ่มก่อนที่จะแทนที่สคริปต์ของระบบ - หมายความว่าอาจง่ายที่จะแทนที่ em ซึ่งไม่ได้ดีเสมอไป
วิลฟ์

9

IMO วิธีที่ดีที่สุดคือการเพิ่มสคริปต์ลงใน ~ / bin

mkdir ~/bin

~/binควรเพิ่มเส้นทางของคุณโดยอัตโนมัติ ถ้าไม่เพิ่มให้~/.bashrc

if [ -d $HOME/bin ]; then
    PATH=$PATH:$HOME/bin
fi

หากคุณต้องการให้ผู้ใช้ทุกคนสามารถเพิ่มพวกเขาได้ /usr/local/bin


ในกรณีนี้เนื่องจากเป็นสคริปต์จากแอปพลิเคชันฉันจึงแนะนำให้ใส่ลิงก์สัญลักษณ์สำหรับสคริปต์ใน~/binเพื่อการบำรุงรักษาที่ดีขึ้น
elias

3

ทางออกอื่น

  1. เพิ่มพา ธ เพื่อ~/.bashrcเปิดโดยใช้กลุ่ม$ vim ~/.bashrc

    ตัวอย่าง:

    # add extra paths export PATH=$PATH:~/Scripts

  2. เมื่อเส้นทางถูกเพิ่มให้ทำงาน:

    $ source ~/.bashrc

  3. หากเพิ่มอย่างถูกต้องไม่ควรมีข้อผิดพลาด

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