เมื่อฉันใช้ Git Bash (บน Windows) ฉันไม่สามารถเรียกใช้ไฟล์ปฏิบัติการใด ๆ โดยไม่ระบุเส้นทางแบบเต็มแม้ว่ามันจะอยู่ในโฟลเดอร์ที่อยู่ในตัวแปร PATH ของฉันก็ตาม ดูเหมือนแบชจะไม่รู้จักมัน ทำไม? จะแก้ไขได้หรือไม่?
เมื่อฉันใช้ Git Bash (บน Windows) ฉันไม่สามารถเรียกใช้ไฟล์ปฏิบัติการใด ๆ โดยไม่ระบุเส้นทางแบบเต็มแม้ว่ามันจะอยู่ในโฟลเดอร์ที่อยู่ในตัวแปร PATH ของฉันก็ตาม ดูเหมือนแบชจะไม่รู้จักมัน ทำไม? จะแก้ไขได้หรือไม่?
คำตอบ:
เข้าใจแล้ว ในฐานะผู้ใช้ Windows ฉันเคยพิมพ์ชื่อปฏิบัติการที่ไม่มีนามสกุล ในกรณีของฉันฉันต้องการเรียกใช้ไฟล์ที่เรียกว่าcup.bat
. ในเชลล์ของ Windows การพิมพ์cup
ก็เพียงพอแล้ว Bash ไม่ทำงานด้วยวิธีนี้มันต้องการชื่อเต็ม กำลังพิมพ์cup.bat
ช่วยแก้ปัญหาได้ (ฉันไม่สามารถเรียกใช้ไฟล์ได้เนื่องจากเห็นได้ชัดว่า bash ไม่เข้าใจเนื้อหาของมัน)
อีกหนึ่งเหตุผลในการเปลี่ยนมาใช้ posh-git ..
ขอบคุณ @Tom ที่ชี้ทางที่ถูกต้องให้ฉัน
alias cup=cup.bat
.bat
; ส่วนขยายหมายถึงสคริปต์แบตช์ของ Windows - โดยเฉพาะในเครื่อง Windows
บางที bash ไม่เห็นเส้นทาง Windows ของคุณ พิมพ์env|grep PATH
ในทุบตีเพื่อยืนยันสิ่งที่เส้นทางที่มันเห็น
ตามความคิดเห็นของ @ Daniel และขอบคุณคำตอบของ @ Tom ฉันพบว่า Git bash ใช้ PATH จริง ๆ แต่ไม่ใช่เส้นทางล่าสุดที่ฉันเพิ่งติดตั้ง เพื่อหลีกเลี่ยงปัญหานี้ฉันได้เพิ่มไฟล์ในไดเร็กทอรี home (windows) ชื่อ:
.bashrc
และเนื้อหาดังต่อไปนี้:
PATH=$PATH:/c/Go/bin
เนื่องจากฉันกำลังติดตั้ง Go และพา ธ นี้มีไฟล์ปฏิบัติการgo.exe
Now Git bash สามารถจดจำคำสั่ง:
go
บางทีการรีบูตระบบอาจเพียงพอในกรณีของฉัน แต่ฉันดีใจที่โซลูชันนี้ใช้ได้ไม่ว่าในกรณีใด ๆ
PATH=$PATH:/c/Go/bin:/c/other/path
c:/Users/[myusername]/
นั่นคือโฮมไดเร็กทอรีของฉัน
ในขณะที่คุณกำลังติดตั้ง Git คุณสามารถเลือกตัวเลือกที่แสดงด้านล่างซึ่งจะช่วยให้คุณกำหนดเส้นทางโดยอัตโนมัติ
มันได้ผลสำหรับฉัน :)
สร้างไฟล์ใน C: \ Users \ USERNAME ซึ่งเรียกว่า config.bashrc ซึ่งประกอบด้วย:
PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space
ตอนนี้ย้ายไฟล์ในบรรทัดคำสั่งไปยังตำแหน่งที่ถูกต้อง:
mv config.bashrc .bashrc
คำถามเก่า แต่สามารถช่วยคนอื่นได้
ฉันเปลี่ยนผู้ใช้ PATH ของฉันให้กว้างหลังจากนั้นฉันก็แค่ออกจากระบบและเข้าสู่ระบบอีกครั้ง
อย่างนั้นแหละ! git bash
โหลดค่า PATH ใหม่อย่างถูกต้อง
export PATH=$NEW_PATH:$PATH
. และทำสิ่งต่างๆตามปกติ
รีสตาร์ทคอมพิวเตอร์หลังจากเพิ่มค่าใหม่ให้กับ PATH
ฉันสามารถยืนยันได้ว่าการรีสตาร์ทระบบจะทำให้แน่ใจว่า PATH ที่ตั้งไว้ในตัวแปรสภาพแวดล้อมใน windows ถูกเลือกโดย git และไม่มีวิธีอัตโนมัติอื่น ๆ
ดูเหมือนว่าสาเหตุที่แท้จริงคือ Git Bash ไม่สามารถแยกวิเคราะห์ตัวแปร% USERPROFILE% ได้อย่างถูกต้อง แทนที่จะทำให้มันสัมพันธ์กับ C: \ Users \\ มันจะได้รับค่า C: \ Windows \ System 32 \ systemprofile \ หลังจากเปลี่ยนสิ่งนี้เป็นที่อยู่ที่มีคุณสมบัติครบถ้วนมันก็ใช้งานได้และแม้ว่าฉันจะตั้งค่าย้อนกลับไปในภายหลัง Git Bash ก็ยังคงอยู่ มี PATH ที่ถูกต้องด้วยเหตุผลบางประการ
ใน Windows 10 เพียงถอนการติดตั้งคอมไพล์แล้วติดตั้งอีกครั้ง มันจะตั้งค่าตัวแปรสภาพแวดล้อมโดยอัตโนมัติสำหรับคุณ ฉันได้ลบตัวแปรสภาพแวดล้อมโดยไม่ได้ตั้งใจและฉันไม่สามารถใช้ git ใน IDE ของฉันได้ การติดตั้งคอมไพล์ใหม่ช่วยแก้ปัญหานี้ได้
ในกรณีของคุณgit-bash
's PATH
ของขวัญ แต่ไม่ล่าสุดและคุณไม่ต้องการรีบูต แต่งอกใหม่ของคุณPATH
s คุณสามารถลองปิดทั้งหมดcmd.exe
, powershell.exe
และgit-bash.exe
และเปิดหน้าต่าง cmd.exe หนึ่งจากเมนู Start หรือ Desktop และดูว่าPATH
env มีการปรับปรุง . หากคุณเปลี่ยนทั้งระบบPATH
คุณต้องเปิดหน้าต่าง cmd ที่มีสิทธิพิเศษด้วย
หมายเหตุ: สิ่งนี้ใช้ไม่ได้กับ Windows ทุกรุ่นและเปิดcmd.exe
ที่อื่นนอกเหนือจากเมนูเริ่มหรือเดสก์ท็อปอาจไม่ทำงานทดสอบกับคอมพิวเตอร์ 3 เครื่องของฉันและ 2 เครื่องใช้งานได้ ฉันไม่เข้าใจว่าทำไมจึงใช้งานได้ แต่เนื่องจากPATH
ตัวแปรสภาพแวดล้อมถูกสร้างขึ้นโดยอัตโนมัติเมื่อฉันเข้าสู่ระบบและออกจากระบบฉันจะไม่ทำให้ตัวแปรนั้นสับสนด้วยการต่อตัวแปร
สำหรับฉันวิธีที่สะดวกที่สุดคือ 1) สร้างไดเร็กทอรี "bin" ในรูทของ C: drive 2) เพิ่ม "C: / bin;" ไปยัง PATH ใน "My Computer -> Properties -> Environemtal Variables"
ฉันพบปัญหานี้เมื่อฉันพยายามใช้ mingw เพื่อรวบรวม xgboost lib ใน Win10 ในที่สุดฉันก็พบทางออก
สร้างไฟล์ชื่อ. bashrc ในโฮมไดเร็กทอรีของคุณ (โดยปกติคือ C: \ Users \ username) จากนั้นเพิ่มเส้นทางเข้าไป อย่าลืมใช้เครื่องหมายคำพูดหากเส้นทางของคุณว่างเปล่าและอย่าลืมใช้ / c / แทน C: /
ตัวอย่างเช่น:
PATH = $ PATH: "/ c / Program Files / mingw-w64 / x86_64-7.2.0-posix-seh-rt_v5-rev1 / mingw64 / bin"
ฉันเจอกับความผิดพลาดโง่ ๆ ในส่วนของฉัน ฉันมีระบบที่กว้างและมีการกำหนดเส้นทางตัวแปรผู้ใช้สำหรับพื้นที่ทำงาน golang บนเครื่อง windows 10 ของฉัน เมื่อฉันลบเส้นทางตัวแปรของระบบที่ซ้ำซ้อนและออกจากระบบและเปิดใหม่ฉันสามารถเรียกไฟล์. exe ใน bash และโทรไปที่ env ได้สำเร็จ
แม้ว่า OP จะได้รับคำตอบ แต่ก็เป็นอีกปัญหาหนึ่งที่อาจทำให้ bash มองไม่เห็นเส้นทางของคุณ ฉันเพิ่งทดสอบ bash อีกครั้งกับปัญหานี้และดูเหมือนว่าจะให้ความขัดแย้งบางอย่างที่บล็อก bash จากการทำตามเส้นทางใดเส้นทางหนึ่ง
ฉันรู้ว่ามันเป็นคำถามเก่า แต่มีตัวแปรสภาพแวดล้อมสองประเภท ระบบที่เป็นเจ้าของกับผู้ใช้และระบบเดียว ขึ้นอยู่กับวิธีที่คุณเปิด git bash (ด้วยสิทธิ์ของผู้ใช้หรือด้วยสิทธิ์ของผู้ดูแลระบบ) ตัวแปรสภาพแวดล้อม PATH ที่ใช้อาจมาจากตัวแปรผู้ใช้ของคุณหรือจากตัวแปรระบบ ดูด้านล่าง:
ดังที่ได้กล่าวไว้ในคำตอบก่อนหน้านี้ให้ตรวจสอบด้วยคำสั่งenv|grep PATH
เพื่อดูว่าคุณใช้คำสั่งใดและอัปเดตตัวแปรของคุณตามนั้น BTW ไม่จำเป็นต้องรีบูตระบบ เพียงแค่ปิดและเปิด git bash อีกครั้ง
ในกรณีของฉันมันเกิดขึ้นขณะติดตั้ง heroku cli และ git bash นี่คือสิ่งที่ฉันได้ผล
ไปที่ตำแหน่งนี้
C:\Users\<username here>\AppData\Local
และลบไฟล์ในโฟลเดอร์ case heroku ของฉัน ดังนั้นฉันจึงลบโฟลเดอร์และเรียกใช้ cmd มันกำลังทำงาน
อย่าใช้อักขระพิเศษ (\) เมื่อแก้ไข / เพิ่มตัวแปร $ PATH ของคุณ ตัวอย่างเช่นไดเร็กทอรีแอ็พพลิเคชันในไฟล์โปรแกรมจะมีลักษณะดังนี้:
PATH=$PATH:/c/Program Files (x86)/random/application
อย่าทำสิ่งนี้:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/
หวังว่านี่จะช่วยได้
PATH=$PATH:/c/Program Files (x86)/random/application
... นี่ไม่ใช่ไวยากรณ์ bash ที่ถูกต้องสำหรับการตั้งค่า PATH นี่เป็นการชั่วคราวจะเพิ่มไดเรกทอรี/c/Program
ไปยังเส้นทางแล้วพยายามที่จะเรียกใช้โปรแกรมที่มีการขัดแย้งFiles
(x86)/random/application
สิ่งเดียวที่ผิดกับตัวอย่าง "อย่าทำสิ่งนี้" ของคุณคือมีแบ็กสแลชสองเท่าสำหรับวงเล็บเมื่อแบ็กสแลชเดี่ยวถูกต้อง
สำหรับผู้ที่ได้ลองใช้วิธีการที่กล่าวมาทั้งหมดรวมถึงระบบ Windows env ตัวแปร,. bashrc, .bashprofile ฯลฯ และสามารถดูเส้นทางที่ถูกต้องใน 'echo $ PATH' ... ฉันอาจมีวิธีแก้ปัญหาให้คุณ
ระงับข้อผิดพลาดโดยใช้exec 2> / dev / null
สคริปต์ของฉันทำงานได้ดี แต่มีข้อผิดพลาด 'ไม่พบคำสั่ง' หรือ 'ไม่พบไดเรกทอรี' แม้ว่าเท่าที่ฉันสามารถบอกได้เส้นทางก็ถูกล้าง ดังนั้นหากคุณระงับข้อผิดพลาดเหล่านั้น (อาจต้องเพิ่ม 'set + e' ด้วย) กว่าจะทำงานได้อย่างถูกต้อง
สร้างตัวแปรผู้ใช้ชื่อ Path และเพิ่มเป็นค่า% Path% จากสิ่งที่ฉันสังเกตเห็น Git Bash เห็นเฉพาะตัวแปรของผู้ใช้ไม่ใช่ตัวแปรระบบ เมื่อทำตามขั้นตอนที่กล่าวถึงคุณจะแสดงตัวแปรระบบของคุณในตัวแปรผู้ใช้
ในตัวแปรสภาพแวดล้อมเส้นทาง Windows 7 ฉันเพิ่งเพิ่มที่ส่วนท้ายของเส้นทางตัวแปรระบบ
\; C: \ Program Files \ Git \ bin
และใช้งานได้แล้ว!