Git Bash ไม่เห็นเส้นทางของฉัน


109

เมื่อฉันใช้ Git Bash (บน Windows) ฉันไม่สามารถเรียกใช้ไฟล์ปฏิบัติการใด ๆ โดยไม่ระบุเส้นทางแบบเต็มแม้ว่ามันจะอยู่ในโฟลเดอร์ที่อยู่ในตัวแปร PATH ของฉันก็ตาม ดูเหมือนแบชจะไม่รู้จักมัน ทำไม? จะแก้ไขได้หรือไม่?


1
คุณสามารถแสดงสิ่งที่อยู่ในตัวแปร PATH ของคุณได้หรือไม่
choroba

อืมมันเกี่ยวข้องกับคำถามของฉันอย่างไร หากคุณสงสัยว่ามีรูปแบบไม่ถูกต้องฉันแน่ใจว่าไม่ใช่เพราะฉันสามารถเรียกใช้ไฟล์ปฏิบัติการเดียวกันโดยใช้เชลล์ Windows ปกติ (cmd)
ulu

@ulu: มันเกี่ยวข้องกับคำถามของคุณเพราะตัวแปร PATH คือสิ่งที่กำหนดว่าไฟล์ปฏิบัติการใดที่สามารถพบได้ ... ตัวแปร PATH มีลักษณะอย่างไรจากภายใน Bash shell?
jalf

โดยเฉพาะมันมี / e / Programs / Tools / bin อยู่ใกล้กับจุดสิ้นสุดนี่คือเส้นทางที่ฉันสนใจบางทีปัญหาคือฉันกำลังพยายามเรียกใช้ไฟล์ bat?
ulu

คำตอบ:


65

เข้าใจแล้ว ในฐานะผู้ใช้ Windows ฉันเคยพิมพ์ชื่อปฏิบัติการที่ไม่มีนามสกุล ในกรณีของฉันฉันต้องการเรียกใช้ไฟล์ที่เรียกว่าcup.bat. ในเชลล์ของ Windows การพิมพ์cupก็เพียงพอแล้ว Bash ไม่ทำงานด้วยวิธีนี้มันต้องการชื่อเต็ม กำลังพิมพ์cup.batช่วยแก้ปัญหาได้ (ฉันไม่สามารถเรียกใช้ไฟล์ได้เนื่องจากเห็นได้ชัดว่า bash ไม่เข้าใจเนื้อหาของมัน)

อีกหนึ่งเหตุผลในการเปลี่ยนมาใช้ posh-git ..

ขอบคุณ @Tom ที่ชี้ทางที่ถูกต้องให้ฉัน


5
คุณยังสามารถใช้นามแฝงเพื่อย่อชื่อ:alias cup=cup.bat
Vitali Dettling

Windows ใช้ทั้ง PATH และ PATH_EXTENSIONS ในการแก้ไข executeables ในขณะที่โลกของ Linux ใช้เฉพาะ PATH
Ferrybig

เชลล์สคริปต์ของคุณไม่ควรจะเรียกว่าอะไร.bat; ส่วนขยายหมายถึงสคริปต์แบตช์ของ Windows - โดยเฉพาะในเครื่อง Windows
tripleee

posh-git แก้อะไรได้บ้าง? คุณไม่จำเป็นต้องพิมพ์นามสกุลอีกหรือ?
Qwerty

@Qwerty posh เป็นคอนโซล Powershell ซึ่งการเปลี่ยนมาใช้นั้นหมายถึงคอนโซลที่เป็นมิตรกับ Windows มากขึ้นพร้อมคำสั่งและทางลัดที่คุ้นเคยทั้งหมด และใช่เช่นเดียวกับบนคอนโซล Windows คุณไม่จำเป็นต้องพิมพ์ ".exe" หรือ ".bat"
ulu

53

บางที bash ไม่เห็นเส้นทาง Windows ของคุณ พิมพ์env|grep PATHในทุบตีเพื่อยืนยันสิ่งที่เส้นทางที่มันเห็น


1
มันบอกว่า: PATH = / c / Users / ulu / bin:.: / usr / local / bin: / mingw / bin: / bin: / e / Programs / Ruby / bin: / c / P rogram Files / Common Files / Microsoft Shared / Windows Live: / c / Program Files (x86) / C ommon Files / Microsoft Shared / Windows Live: / c / Windows / system32: / c / Windows: / c / Wind ows / System32 / Wbem: / c / Windows / System32 / WindowsPowerShell / v1.0 /: / e / Program Files (x86) / Microsoft SQL Server / 90 / Tools / binn /
ulu

2
ลองเรียกใช้ "ซึ่ง your_batch_file.bat" (โดยไม่มีเครื่องหมายอัญประกาศ) ควรส่งคืนตำแหน่งของไฟล์แบตช์ของคุณหากอยู่ในเส้นทางจริงๆ
ทอม

15
ฉันจะเพิ่มเส้นทางสำหรับ git-bash เพื่อดูได้อย่างไร
Angel S. Moreno

14
@ AngelS.Moreno อัปเดตหรือสร้างไฟล์ ".bashrc" ภายใต้โฮมไดเร็กทอรีของคุณ (เช่น "vim ~ / .bashrc" ใน git bash / cygwin) จากนั้นเพิ่ม "PATH = $ PATH: <your_path_1>: <your_path_2>:. .. : <your_path_n> "ไปยังไฟล์นี้ ดังนั้นหากคุณต้องการให้ "/ usr / bin / mypath" อยู่ในตัวแปร PATH บรรทัดนี้จะอ่านว่า: PATH = $ PATH: / usr / bin / mypath
Daniel

35

ตามความคิดเห็นของ @ Daniel และขอบคุณคำตอบของ @ Tom ฉันพบว่า Git bash ใช้ PATH จริง ๆ แต่ไม่ใช่เส้นทางล่าสุดที่ฉันเพิ่งติดตั้ง เพื่อหลีกเลี่ยงปัญหานี้ฉันได้เพิ่มไฟล์ในไดเร็กทอรี home (windows) ชื่อ:

.bashrc

และเนื้อหาดังต่อไปนี้:

PATH=$PATH:/c/Go/bin

เนื่องจากฉันกำลังติดตั้ง Go และพา ธ นี้มีไฟล์ปฏิบัติการgo.exe Now Git bash สามารถจดจำคำสั่ง:

go

บางทีการรีบูตระบบอาจเพียงพอในกรณีของฉัน แต่ฉันดีใจที่โซลูชันนี้ใช้ได้ไม่ว่าในกรณีใด ๆ


และเพื่อเพิ่มหลายเส้นทาง?
Nikiforos

PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer

คุณหมายถึงอะไรโฮมไดเร็กทอรี windows? โปรดระบุ
Mian Asbat Ahmad

c:/Users/[myusername]/นั่นคือโฮมไดเร็กทอรีของฉัน
Mikaël Mayer

9

ในขณะที่คุณกำลังติดตั้ง Git คุณสามารถเลือกตัวเลือกที่แสดงด้านล่างซึ่งจะช่วยให้คุณกำหนดเส้นทางโดยอัตโนมัติ

วิซาร์ดการติดตั้ง Git

มันได้ผลสำหรับฉัน :)


1
@eranotzap ติดตั้ง Git ใหม่ด้วยตัวเลือกอื่นหรือไม่ :)
Brett Ryan

1
@eranotzap ตั้งค่าตัวแปรสภาพแวดล้อมอื่นติดตั้ง Git ใหม่
Muthamizhchelvan V

วิธีนี้ช่วยให้ git bash ใช้ path ได้อย่างไรเมื่อผลลัพธ์สุดท้ายคือ git bash จะไม่ได้รับการติดตั้ง
Jules

@Jules No ในขณะที่ติดตั้ง Git Bash ระบบจะขอให้คุณมีตัวเลือกดังที่แสดงในภาพหน้าจอคุณสามารถเลือกคำถามใดก็ได้ตามความต้องการของคุณ git bash จะได้รับการติดตั้งพร้อมกับตัวเลือกที่เลือก
มูธามิชเชลวาน V

9

สร้างไฟล์ใน C: \ Users \ USERNAME ซึ่งเรียกว่า config.bashrc ซึ่งประกอบด้วย:

PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space

ตอนนี้ย้ายไฟล์ในบรรทัดคำสั่งไปยังตำแหน่งที่ถูกต้อง:

mv config.bashrc .bashrc

4

คำถามเก่า แต่สามารถช่วยคนอื่นได้

ฉันเปลี่ยนผู้ใช้ PATH ของฉันให้กว้างหลังจากนั้นฉันก็แค่ออกจากระบบและเข้าสู่ระบบอีกครั้ง

อย่างนั้นแหละ! git bashโหลดค่า PATH ใหม่อย่างถูกต้อง


เป็นไปได้ไหมโดยไม่ต้องปิด git bask หรือออกจากระบบ ฉันหมายถึงฉันต้องการตั้งค่าตัวแปรเส้นทางและฉันสามารถใช้มันได้ git bash ปัจจุบัน
KCS

บางทีคุณอาจทำได้: export PATH=$NEW_PATH:$PATH. และทำสิ่งต่างๆตามปกติ
fernandosavio

3

รีสตาร์ทคอมพิวเตอร์หลังจากเพิ่มค่าใหม่ให้กับ PATH


2
คอมพิวเตอร์ไม่จำเป็นต้องรีสตาร์ทเซสชันเทอร์มินัลทำ
christianbundy

2
@christianbundy ฉันไม่แน่ใจ แต่ดูเหมือนว่าบางครั้งการรีสตาร์ทเทอร์มินัลไม่ได้ช่วย แต่การรีสตาร์ทคอมพิวเตอร์ช่วยได้ดังนั้นฉันจึงเขียนคำตอบนี้ รีสตาร์ทเทอร์มินัลเป็นครั้งแรกที่ฉันลอง
Pavel

คำตอบง่ายๆและได้ผลอย่างสมบูรณ์
bobanahalf

2

ฉันสามารถยืนยันได้ว่าการรีสตาร์ทระบบจะทำให้แน่ใจว่า PATH ที่ตั้งไว้ในตัวแปรสภาพแวดล้อมใน windows ถูกเลือกโดย git และไม่มีวิธีอัตโนมัติอื่น ๆ


การรีสตาร์ทเทอร์มินัลก็เพียงพอที่จะเลือกเส้นทางใหม่
Vikas Tawniya

1

ดูเหมือนว่าสาเหตุที่แท้จริงคือ Git Bash ไม่สามารถแยกวิเคราะห์ตัวแปร% USERPROFILE% ได้อย่างถูกต้อง แทนที่จะทำให้มันสัมพันธ์กับ C: \ Users \\ มันจะได้รับค่า C: \ Windows \ System 32 \ systemprofile \ หลังจากเปลี่ยนสิ่งนี้เป็นที่อยู่ที่มีคุณสมบัติครบถ้วนมันก็ใช้งานได้และแม้ว่าฉันจะตั้งค่าย้อนกลับไปในภายหลัง Git Bash ก็ยังคงอยู่ มี PATH ที่ถูกต้องด้วยเหตุผลบางประการ


1

ใน Windows 10 เพียงถอนการติดตั้งคอมไพล์แล้วติดตั้งอีกครั้ง มันจะตั้งค่าตัวแปรสภาพแวดล้อมโดยอัตโนมัติสำหรับคุณ ฉันได้ลบตัวแปรสภาพแวดล้อมโดยไม่ได้ตั้งใจและฉันไม่สามารถใช้ git ใน IDE ของฉันได้ การติดตั้งคอมไพล์ใหม่ช่วยแก้ปัญหานี้ได้


1

ในกรณีของคุณgit-bash's PATHของขวัญ แต่ไม่ล่าสุดและคุณไม่ต้องการรีบูต แต่งอกใหม่ของคุณPATHs คุณสามารถลองปิดทั้งหมดcmd.exe, powershell.exeและgit-bash.exeและเปิดหน้าต่าง cmd.exe หนึ่งจากเมนู Start หรือ Desktop และดูว่าPATHenv มีการปรับปรุง . หากคุณเปลี่ยนทั้งระบบPATHคุณต้องเปิดหน้าต่าง cmd ที่มีสิทธิพิเศษด้วย

หมายเหตุ: สิ่งนี้ใช้ไม่ได้กับ Windows ทุกรุ่นและเปิดcmd.exeที่อื่นนอกเหนือจากเมนูเริ่มหรือเดสก์ท็อปอาจไม่ทำงานทดสอบกับคอมพิวเตอร์ 3 เครื่องของฉันและ 2 เครื่องใช้งานได้ ฉันไม่เข้าใจว่าทำไมจึงใช้งานได้ แต่เนื่องจากPATHตัวแปรสภาพแวดล้อมถูกสร้างขึ้นโดยอัตโนมัติเมื่อฉันเข้าสู่ระบบและออกจากระบบฉันจะไม่ทำให้ตัวแปรนั้นสับสนด้วยการต่อตัวแปร


0

สำหรับฉันวิธีที่สะดวกที่สุดคือ 1) สร้างไดเร็กทอรี "bin" ในรูทของ C: drive 2) เพิ่ม "C: / bin;" ไปยัง PATH ใน "My Computer -> Properties -> Environemtal Variables"


0

ฉันพบปัญหานี้เมื่อฉันพยายามใช้ 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"


0

ฉันเจอกับความผิดพลาดโง่ ๆ ในส่วนของฉัน ฉันมีระบบที่กว้างและมีการกำหนดเส้นทางตัวแปรผู้ใช้สำหรับพื้นที่ทำงาน golang บนเครื่อง windows 10 ของฉัน เมื่อฉันลบเส้นทางตัวแปรของระบบที่ซ้ำซ้อนและออกจากระบบและเปิดใหม่ฉันสามารถเรียกไฟล์. exe ใน bash และโทรไปที่ env ได้สำเร็จ

แม้ว่า OP จะได้รับคำตอบ แต่ก็เป็นอีกปัญหาหนึ่งที่อาจทำให้ bash มองไม่เห็นเส้นทางของคุณ ฉันเพิ่งทดสอบ bash อีกครั้งกับปัญหานี้และดูเหมือนว่าจะให้ความขัดแย้งบางอย่างที่บล็อก bash จากการทำตามเส้นทางใดเส้นทางหนึ่ง


0

ฉันรู้ว่ามันเป็นคำถามเก่า แต่มีตัวแปรสภาพแวดล้อมสองประเภท ระบบที่เป็นเจ้าของกับผู้ใช้และระบบเดียว ขึ้นอยู่กับวิธีที่คุณเปิด git bash (ด้วยสิทธิ์ของผู้ใช้หรือด้วยสิทธิ์ของผู้ดูแลระบบ) ตัวแปรสภาพแวดล้อม PATH ที่ใช้อาจมาจากตัวแปรผู้ใช้ของคุณหรือจากตัวแปรระบบ ดูด้านล่าง: ป้อนคำอธิบายภาพที่นี่

ดังที่ได้กล่าวไว้ในคำตอบก่อนหน้านี้ให้ตรวจสอบด้วยคำสั่งenv|grep PATHเพื่อดูว่าคุณใช้คำสั่งใดและอัปเดตตัวแปรของคุณตามนั้น BTW ไม่จำเป็นต้องรีบูตระบบ เพียงแค่ปิดและเปิด git bash อีกครั้ง


0

ในกรณีของฉันมันเกิดขึ้นขณะติดตั้ง heroku cli และ git bash นี่คือสิ่งที่ฉันได้ผล

ไปที่ตำแหน่งนี้

C:\Users\<username here>\AppData\Local

และลบไฟล์ในโฟลเดอร์ case heroku ของฉัน ดังนั้นฉันจึงลบโฟลเดอร์และเรียกใช้ cmd มันกำลังทำงาน


-1

อย่าใช้อักขระพิเศษ (\) เมื่อแก้ไข / เพิ่มตัวแปร $ 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สิ่งเดียวที่ผิดกับตัวอย่าง "อย่าทำสิ่งนี้" ของคุณคือมีแบ็กสแลชสองเท่าสำหรับวงเล็บเมื่อแบ็กสแลชเดี่ยวถูกต้อง
Jules

-2

สำหรับผู้ที่ได้ลองใช้วิธีการที่กล่าวมาทั้งหมดรวมถึงระบบ Windows env ตัวแปร,. bashrc, .bashprofile ฯลฯ และสามารถดูเส้นทางที่ถูกต้องใน 'echo $ PATH' ... ฉันอาจมีวิธีแก้ปัญหาให้คุณ

ระงับข้อผิดพลาดโดยใช้exec 2> / dev / null

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


1
สิ่งนี้ดูเหมือนจะเป็นการเพิกเฉยต่อข้อผิดพลาดและไม่ได้แก้ปัญหาที่ต้นเหตุ
nmio

-3

สร้างตัวแปรผู้ใช้ชื่อ Path และเพิ่มเป็นค่า% Path% จากสิ่งที่ฉันสังเกตเห็น Git Bash เห็นเฉพาะตัวแปรของผู้ใช้ไม่ใช่ตัวแปรระบบ เมื่อทำตามขั้นตอนที่กล่าวถึงคุณจะแสดงตัวแปรระบบของคุณในตัวแปรผู้ใช้


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