OS X - สร้างไดเรกทอรี bin ส่วนตัว (~ / bin) และเรียกใช้สคริปต์โดยไม่ระบุเส้นทางแบบเต็ม


19

ดังนั้นสิ่งที่ฉันพยายามทำคือการสร้างbinไดเรกทอรีส่วนบุคคลที่โฟลเดอร์บ้านของฉัน ฉันสร้างโฟลเดอร์ต่อไปนี้:

/Users/thi/bin

ฉันใส่สคริปต์ของฉันในโฟลเดอร์นี้ แต่ถ้าฉันพิมพ์ใน Terminal:

myScript

มันไม่ทำงาน

ฉันบอกว่าฉันต้องส่งออกเส้นทางถังขยะนี้มีบางอย่างที่เกี่ยวข้องecho $PATHแต่ฉันไม่รู้วิธีการทำ


ดูเพิ่มเติมที่ส่วนท้ายของapple.stackexchange.com/a/98626
nohillside

คำตอบ:


20

คุณต้องเพิ่มไฟล์ต่อไปนี้ใน~/.profile:

export PATH=/Users/thi/bin:$PATH

แล้วก็ source ~/.profile

โปรดทราบว่าคุณอาจต้องสร้างไฟล์นี้และเนื่องจากไฟล์ดังกล่าวเริ่มต้นด้วย.อาจไม่ปรากฏในเครื่องมือค้นหาเพื่อแก้ไขผ่านแอปพลิเคชันเช่นโปรแกรมแก้ไขข้อความ หากต้องการแสดงรายการไฟล์ทั้งหมดรวมถึงไฟล์ที่ซ่อนอยู่ให้ใช้:

ls -la ~/

หากฉันเพิ่มการส่งออก PATH = / Users / thi / bin: $ PATH ไปยังไฟล์. bashrc ของฉัน gonnae ใช้งานได้หรือไม่ ถูกต้องหรือไม่
Thi G.

12
ใช้ดีกว่าแทน$HOME/bin /Users/thi/binจากนั้นคุณจะสามารถคัดลอกการตั้งค่าไปยังเครื่องอื่นซึ่งชื่อผู้ใช้ของคุณอาจแตกต่างออกไป
LHF

ถ้าฉันพิมพ์ในเทอร์มินัล: PATH = $ HOME / bin: $ PATH จากนั้นพิมพ์: export PATH มันจะทำเคล็ดลับหรือไม่?
Thi G.

1
หากคุณทำเช่นนั้นจะเปลี่ยนการตั้งค่าทันที แต่จะไม่สามารถเริ่มได้ในอนาคต ในการเปลี่ยนเส้นทางในแบบที่รอดชีวิตจากการรีบูตคุณต้องรวมคำสั่งเหล่านั้นไว้ใน.profileไฟล์ของคุณ
แดเนียล

1
ดีมากขอบคุณสำหรับคำตอบ ฉันเพิ่มของฉันexport PATH=$HOME/bin:$PATH $HOME/.bash_profile
Thi G.

10

หากคุณใช้ bash ให้เพิ่มบรรทัดลักษณะนี้ลงใน~/.bash_profile:

PATH=~/bin:$PATH

PATHexportมีการทำเครื่องหมายเพื่อการส่งออกโดยปริยายดังนั้นคุณจึงไม่จำเป็นต้องใช้

หากทั้งสอง~/.bash_profileและ~/.profileมีอยู่ทุบตีเท่านั้นอ่าน~/.bash_profileเมื่อมันถูกเรียกว่าเป็นเปลือกเข้าสู่ระบบแบบโต้ตอบ ~/.profileถูกใช้โดยเชลล์อื่นที่อาจไม่เข้าใจตัวเลือกการกำหนดค่าเช่นเดียวกับทุบตี

Terminal และ iTerm 2 เปิดเชลล์ใหม่เป็นเชลล์ล็อกอินตามค่าเริ่มต้น เมื่อทุบตีถูกเรียกเป็นเปลือกเข้าสู่ระบบแบบโต้ตอบมันอ่านแต่ไม่~/.bash_profile ~/.bashrcเลียนแบบขั้วบนแพลตฟอร์มอื่น ๆ มักจะเปลือกหอยใหม่เปิดเป็นเปลือกหอยที่ไม่ได้เข้าสู่ระบบดังนั้นสำหรับตัวอย่างเช่นทุบตีอ่านแต่ไม่~/.bashrc ~/.bash_profileผู้ใช้ OS X มักจะใช้~/.bash_profileเป็นไฟล์กำหนดค่าส่วนบุคคลที่สอดคล้อง~/.bashrcกับแพลตฟอร์มอื่น ๆ แต่ก็เป็นเรื่องธรรมดาที่แหล่งที่มา~/.bashrcจาก~/.bash_profileหรือบอก Terminal หรือ iTerm 2 เพื่อเปิดเชลล์ใหม่เป็นเชลล์ที่ไม่ใช่การเข้าสู่ระบบ

นอกจากนี้คุณยังสามารถเปลี่ยนเส้นทางมากขึ้นทั่วโลกใน/etc/pathsหรือแต่ในบริบทที่หลายเส้นทางที่จะยังคงที่จะเริ่มต้น/etc/launchd.conf /usr/bin:/bin:/usr/sbin:/sbinและฉันต้องการเพียงแค่เปลี่ยนเส้นทางใน shells และ text editor เท่านั้น


เยี่ยมมากขอบคุณสำหรับคำตอบ ฉันเพิ่มของฉันexport PATH=$HOME/bin:$PATH $HOME/.bash_profile
Thi G.

คุณไม่จำเป็นต้องส่งออกและทั้งสองอย่าง~(เมื่อ$HOMEไม่ได้ใส่เครื่องหมายอัญประกาศ) และถูกขยายก่อนการมอบหมายตัวแปรทั้งสองเมื่อใช้การส่งออกหรือการมอบหมายธรรมดา
Lri

Lauri Ranta ทำในสิ่งที่คุณต้องการส่วนตัว.bash_profileหรือ.profile? หรือคุณมี.bashrcในไดเรกทอรีบ้านของคุณ
Thi G.

ฉันเคยใช้. bash_profile เท่านั้น แต่ตอนนี้ฉันใช้. bashrc เป็นไฟล์กำหนดค่าหลักของฉันและ. bash_profile ของฉันมี. ~/.bashrcอยู่ เชลล์ใหม่ถูกเปิดเป็นเชลล์ที่ไม่ได้ล็อกอินในโหมดเชลล์ใน emacs และใน tmux ฉันจะไม่ใช้. profile เป็นไฟล์กำหนดค่าหลักของฉันเพราะมันจะอ่านโดย shell อื่น ๆ เช่น ksh
Lri

3

คุณมักจะใส่เส้นทางเพิ่มเติมหลังจาก$PATHเช่นPATH=$PATH:/$HOME/binเพราะถ้าคุณไม่ต้องการที่จะมาแทนที่ปฏิบัติการอื่นที่มีชื่อเดียวกันที่อาจจะอยู่ใน/binฯลฯ


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