เทอร์มินัลส่งคืนไม่พบคำสั่ง Mac OSX ส่วนใหญ่


16

ฉันยังใหม่กับระบบที่ใช้ Mac OSX และ UNIX ฉันต้องการรันเกม Windows สองสามตัวบน Mac Mini ของฉันดังนั้นฉันจึงเริ่มติดตั้ง Wine และ MacPorts

หลังจากทำเช่นนั้นฉันพิมพ์sudo port install wineและเทอร์มินัลส่งคืนข้อผิดพลาดที่ไม่พบ ฉันลองคำสั่งพื้นฐานอื่น ๆ เช่นsayและclearพวกเขาทั้งหมดกลับข้อผิดพลาดไม่พบ ฉันทำสิ่งนี้และสิ่งที่ฉันเข้าใจมาทั้งหมดคือ PATH อาจตั้งค่าไม่ถูกต้อง ดังนั้นฉันจึงใช้คำสั่งนี้echo $PATHและมันคืนค่านี้:

/ opt / local / bin: / opt / local / sbin: / opt / local / bin: / opt / local / sbin: / opt / local / bin

มีใครบอกวิธีตั้งเส้นทางนี้ให้ถูกต้องได้ไหม ฉันเป็นมือใหม่ที่สมบูรณ์ในการ mac และไม่ทราบว่า. bash_profile หรือไฟล์เหล่านั้นอยู่ที่ไหน ถ้าช่วยได้ฉันได้ติดตั้ง Xcode และเครื่องมือบรรทัดคำสั่งสำหรับ Xcode แล้ว ฉันวิ่ง Mountain Lion


3
น่าเสียดายที่ฉันคิดว่าคุณต้องมีการสอนเกี่ยวกับ Unix เนื่องจากเราสามารถตอบคำถามที่เราอาจไม่สามารถให้พื้นหลังเพียงพอที่จะช่วยให้คุณเข้าใจ สำหรับไวน์ - วิธีที่ง่ายที่สุดคือลองใช้ครอสโอเวอร์ (ราคา) หรือ Wineskin (ฟรี) ซึ่งไม่ต้องการใช้เทอร์มินัล
user151019

คำตอบ:


12

$ PATH /usr/bin:/usr/sbin:/bin:/sbinควรมีโฟลเดอร์เหล่านี้:

ลองแก้ไข~/.bash_profile, ~/.profileหรือ~/.bash_login(มีตัวอย่าง/usr/bin/open ~/.bash_profile -a TextEdit) และแสดงความคิดเห็นออกเส้นใด ๆ ที่ปรับเปลี่ยนเส้นทาง

หากผลงานที่คุณสามารถเพิ่มบรรทัดเช่นการexport PATH=/opt/local/bin:/opt/local/sbin:$PATH~/.bash_profile


ฉันลองส่งออก PATH = / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin และทำงานได้ แต่เมื่อฉันปิดและเปิดเทอร์มินัลอีกครั้งก็จะกลับไปที่ข้อผิดพลาดเดียวกันอีกครั้ง ฉันเป็น noob ที่สมบูรณ์และฉันไม่รู้ว่าที่ไหน ~ / .bash_profile หรือไฟล์เหล่านั้นอยู่ ฉันคิดว่าพวกเขาซ่อนเร้น?
แจ็คโคปแลนด์

~/คือโฮมโฟลเดอร์ ( /Users/username/) ไฟล์ที่เริ่มต้นด้วยระยะเวลาที่ถูกซ่อนไว้ ls -laแต่คุณสามารถแสดงให้พวกเขาด้วยเช่น
Lri

.bash_profile ของฉันมีสิ่งเหล่านี้อยู่แล้ว แต่ฉันยังคงมีปัญหาเดียวกันกับคำสั่งเช่น ng หรือ mssql เมื่อฉันออกจากเทอร์มินัล
dbnex14

3

ปัญหาที่คล้ายกันเกิดขึ้นกับฉันดังนั้นสิ่งที่ฉันทำคือ:

1) พิมพ์การส่งออกPATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"ไปยังเครื่องเทอร์มินัลเพื่อให้ทำงานได้ชั่วคราว

2) การแก้ไข bash_profile โดยพิมพ์ /usr/bin/open ~/.bash_profile -a TextEdit

3) เมื่อฉันเปิดไฟล์ bash_profile ฉันรู้ว่าการส่งออกบรรทัดสุดท้ายดูยุ่งกับสัญลักษณ์แปลก ๆ ดังนั้นฉันจึงเปลี่ยนเป็น export PATH=/opt/local/bin:/opt/local/sbin:$PATH

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


2

ดูเหมือนว่าคุณเขียนทับเส้นทางของคุณแทนที่จะเพิ่มลงไป

ตรวจสอบให้แน่ใจเมื่อคุณตั้งค่าเส้นทางของคุณคุณรวม"${PATH}"ถึงรวมถึงเส้นทางที่มีอยู่ของคุณเช่นกัน

โดยค่าเริ่มต้น $ PATH ถูกตั้งค่าไว้ในสองสามไฟล์ ในทางเทคนิคคุณควรเพิ่ม $ PATH ในไฟล์. bash_profile ในโฮมไดเร็กตอรี่ของคุณ

ข้อเสนอแนะหนึ่งข้อเพื่อตรวจสอบว่ามีโฟลเดอร์ใดโฟลเดอร์หนึ่งอยู่ก่อนที่คุณจะเพิ่มลงใน PATH ของคุณหรือไม่

เช่นฉันมี:

if [ -d /usr/local/bin ] ; then
    PATH=/usr/local/bin:"${PATH}"
fi

if [ -d /usr/local/mysql/bin ] ; then
    PATH=/usr/local/mysql/bin:"${PATH}"
fi

if [ -d /opt/local/bin ] ; then
    PATH=/opt/local/bin:"${PATH}"
fi

if [ -d /opt/local/sbin ] ; then
    PATH=/opt/local/sbin:"${PATH}"
fi

if [ -d ~/bin ] ; then
    PATH=~/bin:"${PATH}"
fi

( -d directoryคำสั่งตรวจสอบเพื่อดูว่ามีไดเรกทอรีอยู่หรือไม่)


1

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

export PATH=/some/new/path:PATH (incorrect, note missing $)

VS

export PATH=/some/new/path:$PATH (correct)

0

นอกเหนือจากการแก้ไขคำตอบแล้วฉันยังต้องการเรียกร้องสิ่งหนึ่งเพื่อทดสอบ

หากหน้าต่างปัจจุบันของคุณมีตัวแปร PATH ที่ไม่ดีและระบบของคุณไม่เสียหายมากขึ้นคุณสามารถแก้ไขเส้นทางได้อย่างง่ายดาย:

echo $PATH
/usr/libexec/path_helper

เปรียบเทียบเอาต์พุตของคำสั่งทั้งสองข้างต้น หากคุณต้องการกลับไปที่เส้นทาง "ปลอดภัย" เพียงแค่คัดลอกและวางบรรทัดที่path_helperมีให้ในเทอร์มินัลนั้น บนระบบ Mac 10.11 ที่ไม่มีการแก้ไขคุณควรมีเอาต์พุตนี้จากเครื่องมือตัวช่วย:

PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"; export PATH;

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


1
หรือคุณสามารถออกPATH=$(/usr/bin/getconf PATH)Path ที่ใช้งานได้ในเชลล์ปัจจุบัน /usr/localไม่มีอยู่ในระบบที่ไม่ได้แก้ไข
fd0

ยอดเยี่ยม @fdo - ฉันไม่ได้ตระหนักถึงสิ่งที่อาจเกิดความสับสน getconf ดังนั้นมันอาจจะเป็นสิ่งที่ดีเช่นเดียวกับการเขียนโค้ดอย่างหนัก นอกจากนี้ยังสั้นกว่าการแก้ไข "กำลังดุร้าย" ของฉัน
bmike

path_helperสร้างเส้นทางจากเส้นทางปัจจุบัน/etc/pathsไฟล์และไฟล์ใด ๆ /etc/paths.dภายใน นอกจากนี้ยังสามารถได้รับอิทธิพลจากการตั้งค่าใด ๆ /etc/launchd.confในเส้นทาง getconfพิมพ์ PATH ของระบบฮาร์ดโค้ดในเคอร์เนลsysctl user.cs_path-
fd0

0

./bash_profile ของเทอร์มินัลของคุณอาจถูกเขียนทับ

ใช้export PATH=/usr/bin:/bin:/usr/sbin:/sbin/usr/local/binในเทอร์มินัลเพื่อเขียนการตั้งค่า PATH ปัจจุบันอีกครั้งชั่วคราว สิ่งนี้จะช่วยให้คุณสามารถเข้าถึงsudoและnanoคุณจะใช้งานnano .bash_profileอะไร สำหรับฉันการลบทุกอย่างในไฟล์ใช้งานได้

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