Git Bash không nhìn thấy PATH của tôi


107

Khi tôi sử dụng Git Bash (trên Windows), tôi không thể chạy bất kỳ tệp thực thi nào mà không chỉ định đường dẫn đầy đủ của nó, mặc dù nó nằm trong một thư mục có trong biến PATH của tôi. Hình như bash không nhận ra. Tại sao? Tôi có thể sửa chữa nó không?


1
Bạn có thể chỉ ra chính xác những gì trong biến PATH của bạn không?
choroba

Hmm điều đó liên quan đến câu hỏi của tôi như thế nào? Nếu bạn nghi ngờ rằng nó không đúng định dạng, tôi chắc chắn rằng nó không phải vậy, vì tôi có thể chạy cùng các tệp thực thi bằng cách sử dụng Windows shell thông thường (cmd).
ulu

@ulu: nó có liên quan đến câu hỏi của bạn vì biến PATH là thứ xác định tệp thực thi nào có thể được tìm thấy ... Biến PATH trông như thế nào từ bên trong Bash shell?
jalf

Inparticular, nó chứa / e / Programs / Tools / bin ở đâu đó gần cuối, đây là đường dẫn mà tôi quan tâm. Có thể vấn đề là tôi đang cố chạy một tệp bat?
ulu

Câu trả lời:


64

Hiểu rồi. Là người dùng Windows, tôi thường nhập các tên thực thi không có phần mở rộng. Trong trường hợp của tôi, tôi muốn thực thi một tệp được gọi cup.bat. Trong Windows shell, chỉ cần gõ cuplà đủ. Bash không hoạt động theo cách này, nó muốn có tên đầy đủ. Đánh máy đã cup.batgiải quyết được vấn đề. (Tôi không thể chạy tệp mặc dù, vì rõ ràng bash không thể hiểu nội dung của nó)

Thêm một lý do để chuyển sang posh-git ..

Cảm ơn @Tom đã chỉ cho tôi đúng hướng.


5
Bạn cũng có thể sử dụng một bí danh để rút ngắn tên:alias cup=cup.bat
Vitali Dettling

Windows sử dụng cả hai PATH và PATH_EXTENSIONS giải quyết executeables, trong khi thế giới Linux chỉ sử dụng PATH
Ferrybig

Tập lệnh shell của bạn chắc chắn không được gọi là gì cả .bat; phần mở rộng ngụ ý một tập lệnh hàng loạt của Windows - đặc biệt là trên máy Windows.
tripleee

Posh-git giải quyết được gì? Bạn không cần phải nhập phần mở rộng nữa?
Qwerty

@Qwerty posh là một bảng điều khiển Powershell, chuyển sang nó có nghĩa là một bảng điều khiển thân thiện với Windows hơn với tất cả các lệnh và phím tắt quen thuộc. Và có, giống như trên bất kỳ bảng điều khiển Windows nào, bạn không phải nhập ".exe" hoặc ".bat"
ulu

53

Có thể bash không thấy đường dẫn Windows của bạn. Gõ env|grep PATHtrong bash để xác nhận những gì con đường thấy.


1
Nó nói: 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
Hãy thử chạy "which your_batch_file.bat" (không có dấu ngoặc kép). Nó sẽ trả về vị trí của tệp hàng loạt của bạn, nếu nó thực sự nằm trong đường dẫn.
Tom

15
làm cách nào để thêm đường dẫn cho git-bash để xem?
Thiên thần S. Moreno

14
@ AngelS.Moreno cập nhật hoặc tạo tệp ".bashrc" trong thư mục chính của bạn (ví dụ: "vim ~ / .bashrc" trong git bash / cygwin), sau đó thêm "PATH = $ PATH: <your_path_1>: <your_path_2> :. ..: <your_path_n> "vào tệp này. Vì vậy, nếu bạn muốn "/ usr / bin / mypath" có trong biến PATH, dòng này sẽ có nội dung: PATH = $ PATH: / usr / bin / mypath
Daniel vào

35

Theo nhận xét của @ Daniel và nhờ câu trả lời của @ Tom, tôi phát hiện ra rằng Git bash thực sự đang sử dụng PATH nhưng không phải là đường dẫn mới nhất mà tôi đã cài đặt gần đây. Để khắc phục sự cố này, tôi đã thêm một tệp vào thư mục home (windows) của mình có tên:

.bashrc

và nội dung như sau:

PATH=$PATH:/c/Go/bin

bởi vì tôi đang cài đặt Go và đường dẫn này chứa tệp thực thi được. go.exe Bây giờ Git bash đã có thể nhận ra lệnh:

go

Có lẽ chỉ cần khởi động lại hệ thống là đủ trong trường hợp của tôi, nhưng tôi rất vui vì giải pháp này hoạt động trong mọi trường hợp.


Và thêm nhiều đường dẫn?
Nikiforos

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

Thư mục cửa sổ chủ nghĩa là gì? Xin hãy chỉ ra cụ thể.
Mian Asbat Ahmad

c:/Users/[myusername]/đó là thư mục chính của tôi
Mikaël Mayer

9

Trong khi cài đặt Git, bạn có thể chọn tùy chọn được hiển thị bên dưới, nó sẽ giúp bạn đặt đường dẫn tự động.

Trình hướng dẫn cài đặt Git

Nó đã làm việc cho tôi :)


1
@eranotzap cài đặt lại Git với tùy chọn thay thế? :)
Brett Ryan

1
@eranotzap Thiết lập Biến Environemtal nếu không, hãy cài đặt lại Git
Muthamizhchelvan. V

Làm thế nào điều này giúp cho git bash sử dụng đường dẫn, khi kết quả cuối cùng là git bash đó thậm chí sẽ không được cài đặt?
Jules

@Jules Không, trong khi cài đặt Git Bash, nó sẽ yêu cầu bạn cung cấp các tùy chọn như được hiển thị trong ảnh chụp màn hình, ở đó bạn có thể chọn bất kỳ yêu cầu nào theo nhu cầu của mình, git bash sẽ được cài đặt với tùy chọn chọn.
Muthamizhchelvan. V

9

Tạo một tệp trong C: \ Users \ USERNAME được gọi là config.bashrc, chứa:

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

Bây giờ di chuyển tệp trên dòng lệnh đến vị trí chính xác:

mv config.bashrc .bashrc

4

Khởi động lại máy tính sau khi đã thêm giá trị mới vào PATH.


1
Máy tính không cần phải được khởi động lại, phiên đầu cuối thì có.
christianbundy

2
@christianbundy Tôi không chắc, nhưng có vẻ như đôi khi khởi động lại thiết bị đầu cuối không được giúp đỡ, nhưng khởi động lại máy tính đã giúp ích, vì vậy tôi đã viết câu trả lời này. Khởi động lại thiết bị đầu cuối là lần đầu tiên tôi thử.
Pavel

Một câu trả lời đơn giản như vậy, và hoàn toàn hiệu quả.
bobanahalf

4

Câu hỏi cũ nhưng nó có thể giúp người khác.

Tôi đã thay đổi toàn bộ người dùng PATH của mình, sau đó tôi chỉ cần đăng xuất và đăng nhập lại.

Đó là nó! git bashđã tải đúng giá trị PATH mới.


Có thể không đóng git bask hoặc đăng xuất. Ý tôi là tôi muốn thiết lập biến đường, và tôi có thể sử dụng nó nó git hiện bash
KCS

Có lẽ bạn có thể làm: export PATH=$NEW_PATH:$PATH. Và làm công cụ bình thường
fernandosavio

2

Tôi có thể xác nhận rằng việc khởi động lại hệ thống sẽ đảm bảo rằng bộ PATH trong biến môi trường trong windows được git chọn và không có cách tự động nào khác.


1

Có vẻ như nguyên nhân gốc rễ ở đây là Git Bash không thể luôn phân tích cú pháp chính xác biến% USERPROFILE%. Thay vì làm cho nó liên quan đến C: \ Users \\ nó nhận giá trị C: \ Windows \ System 32 \ systemprofile \ Sau khi thay đổi địa chỉ này thành một địa chỉ đủ điều kiện, nó vẫn hoạt động và ngay cả khi tôi đặt nó trở lại sau đó, Git Bash vẫn có PATH chính xác vì một số lý do.


1

Trên Windows 10, chỉ cần gỡ cài đặt git và cài đặt lại. Nó sẽ tự động đặt biến môi trường cho bạn. Tôi đã xóa nhầm biến môi trường và tôi không thể sử dụng git bên trong IDE của mình. Cài đặt lại git đã khắc phục sự cố này.


1

Trong trường hợp của bạn git-bash's PATHquà nhưng không phải mới nhất và bạn không muốn khởi động lại nhưng tái sinh của bạn PATHs, bạn có thể thử đóng tất cả cmd.exe, powershell.exegit-bash.exevà mở một cửa sổ cmd.exe từ Start Menu hoặc máy tính để bàn và xem nếu PATHenv được cập nhật . Nếu bạn thay đổi toàn hệ thống, PATHbạn cũng cần mở một cửa sổ cmd đặc quyền.

Lưu ý: Điều này không hoạt động với tất cả các phiên bản Windows và mở cmd.exebất kỳ nơi nào khác ngoài Start Menu hoặc Desktop có thể không hoạt động , đã thử nghiệm với 3 máy tính của tôi và 2 trong số đó hoạt động. Tôi đã không tìm ra lý do tại sao điều này hoạt động, nhưng vì PATHbiến môi trường được tạo tự động khi tôi đăng nhập và đăng xuất, tôi sẽ không làm rối biến đó với nối biến.


0

Đối với tôi, điều thuận tiện nhất là: 1) Tạo thư mục "bin" trong thư mục gốc của ổ C: \ 2) Thêm "C: / bin;" đến PATH trong "Máy tính của tôi -> Thuộc tính -> Biến Environemtal"


0

Tôi gặp sự cố này khi tôi cố gắng sử dụng mingw để biên dịch xgboost lib trong Win10. Cuối cùng tôi đã tìm ra giải pháp.

Tạo một tệp có tên là .bashrc trong thư mục chính của bạn (thường là C: \ Users \ tên người dùng). Sau đó, thêm đường dẫn vào nó. Hãy nhớ sử dụng dấu ngoặc kép nếu đường dẫn của bạn chứa trống và nhớ sử dụng / c / thay vì C: /

Ví dụ:

PATH = $ PATH: "/ c / Program Files / mingw-w64 / x86_64-7.2.0-posix-seh-rt_v5-rev1 / mingw64 / bin"


0

Tôi đã mắc phải một sai lầm ngu ngốc về phần mình. Tôi đã có một hệ thống rộng và một đường dẫn biến người dùng được đặt cho không gian làm việc golang của tôi trên máy tính windows 10 của tôi. Khi tôi loại bỏ đường dẫn biến hệ thống thừa và đăng xuất rồi bật lại, tôi có thể gọi các tệp .exe trong bash và gọi go env thành công.

Mặc dù OP đã được trả lời, đây là một vấn đề khác có thể khiến bash không nhìn thấy đường dẫn của bạn. Tôi vừa thử nghiệm bash một lần nữa với vấn đề này và nó dường như đưa ra một xung đột nào đó chặn bash theo một trong hai đường dẫn.


0

Tôi biết đó là một câu hỏi cũ nhưng có hai loại biến môi trường. Cái được sở hữu bởi Người dùng và trên toàn hệ thống. Tùy thuộc vào cách bạn mở git bash (với đặc quyền của người dùng hoặc với đặc quyền của quản trị viên), biến môi trường mà PATH được sử dụng có thể từ bạn Biến người dùng hoặc từ các biến Hệ thống. Xem bên dưới: nhập mô tả hình ảnh ở đây

như đã nói trong câu trả lời trước, hãy kiểm tra bằng lệnh env|grep PATHđể xem bạn đang sử dụng lệnh nào và cập nhật biến của bạn cho phù hợp. BTW, không cần khởi động lại hệ thống. Chỉ cần đóng và mở lại git bash


0

Trong trường hợp của tôi Nó đã xảy ra khi cài đặt heroku cli và git bash, Đây là những gì tôi đã làm để hoạt động.

đã đến địa điểm này

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

và xóa tệp trong thư mục heroku trường hợp của tôi. Vì vậy, tôi đã xóa thư mục và chạy cmd. Nó đang làm việc


-1

Không thoát (\) các ký tự đặc biệt khi chỉnh sửa / thêm vào biến $ PATH của bạn. Ví dụ: một thư mục ứng dụng trong các tệp chương trình sẽ giống như sau: PATH=$PATH:/c/Program Files (x86)/random/application

Đừng làm điều này:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

Hi vọng điêu nay co ich.


PATH=$PATH:/c/Program Files (x86)/random/application... đây không phải là cú pháp bash chính xác để thiết lập PATH. Điều này sẽ tạm thời thêm thư /c/Programmục vào đường dẫn, sau đó cố gắng chạy chương trình Filesvới các đối số (x86)/random/application. Điều duy nhất sai với ví dụ "không làm điều này" của bạn là nó đã tăng gấp đôi dấu gạch chéo ngược cho dấu ngoặc vuông, khi dấu gạch chéo ngược đơn là đúng.
Jules

-2

Đối với những người bạn đã thử tất cả các phương pháp được đề cập ở trên bao gồm cả Windows system env. biến, .bashrc, .bashprofile, v.v. VÀ có thể thấy đường dẫn chính xác trong 'echo $ PATH' ... Tôi có thể có giải pháp cho bạn.

ngăn chặn các lỗi bằng cách sử dụng thực thi 2> / dev / null

Tập lệnh của tôi chạy tốt nhưng gặp lỗi "không tìm thấy lệnh" hoặc "Không tìm thấy thư mục" mặc dù, theo như tôi có thể nói, các đường dẫn đã phẳng. Vì vậy, nếu bạn loại bỏ những lỗi đó (cũng có thể phải thêm 'set + e'), thì nó vẫn hoạt động bình thường.


1
Điều này dường như chỉ là bỏ qua lỗi và không giải quyết được nguyên nhân gốc rễ của vấn đề.
nmio

-3

Tạo một biến Người dùng có tên Đường dẫn và thêm dưới dạng giá trị% Đường dẫn%, từ những gì tôi nhận thấy Git Bash chỉ thấy Biến người dùng chứ không thấy Biến hệ thống. Bằng cách thực hiện quy trình đã đề cập, bạn sẽ hiển thị Biến hệ thống của mình trong Biến người dùng.


-3

Trong Windows 7 Path Environment Variables, tôi chỉ cần thêm vào cuối đường dẫn System Variable

\; C: \ Program Files \ Git \ bin

và nó hoạt động ngay bây giờ!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.