Biến env PATH trên Mac OS X và / hoặc Eclipse


17

Khi tôi in đường dẫn trong bash, nó sẽ in ra điều này:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Khi tôi chạy System.out.println (System.getenv ("PATH")); trong Java chạy dưới Eclipse, nó in

/usr/bin:/bin:/usr/sbin:/sbin

Làm thế nào tôi có thể tìm ra lý do tại sao có sự khác biệt này? Tôi cần thêm / usr / local / bin vào PATH và làm cho nó có sẵn cho các ứng dụng Java trong Eclipse. (lưu ý: Tôi đã không thực hiện sửa đổi đường dẫn hệ thống, vì vậy đây là các giá trị mặc định được đặt bởi HĐH hoặc có lẽ bởi một hoặc nhiều ứng dụng tôi đã cài đặt.)

Câu trả lời:


10

Nếu bạn muốn đặt một hệ thống biến rộng trên OSX, bạn cần đặt nó trong tệp ~ / .MacOSX / môi trường.plist của bạn.

Xem trang này trên trang web của apple để biết thêm chi tiết.


1
Thật không may, điều này dường như không làm việc cho tôi.
thSoft

9

Đối với những bạn đang tìm kiếm một câu trả lời nhiều năm sau (neon, Oxygen):

Một số nút và công cụ angular / angular2 của tôi trong nhật thực không thành công do thiếu các mục $ PATH trong thiết bị đầu cuối MacOS. Công cụ của bạn có thể sử dụng thiết bị đầu cuối nhật thực nhúng mà không bắt đầu cung cấp vỏ đăng nhập / người dùng của bạn. Vì vậy, bạn cần đặt thiết bị đầu cuối nhật thực trong tùy chọn nhật thực của mình để bắt đầu dưới dạng --login shell để bao gồm các cài đặt PATH của người dùng:

Đi đến:

Preferences -> Terminal -> Local Terminal

và thiết lập

Arguments đến: --login

mở Terminal mới bên trong Eclipse và từ giờ trở đi, người dùng $ PATH của bạn sẽ được sử dụng. Ngoài ra, mọi thứ bạn đã thiết lập trong ~ / .bash_profile sẽ chạy khi mở Terminal mới trong Eclipse.


Giải pháp tốt nhất, giải quyết vấn đề chỉ bằng cách thay đổi cấu hình nhật thực trong GUI.
pXel

Câu trả lời này khiến tôi nâng cấp lên Oxygen, và đó là tất cả những gì tôi cần để làm cho nó hoạt động.
John

Tôi không có menu con "Terminal" trong Eclipse với chuỗi phiên bản "2019-06 (4.12.0)".
tsj

8

Có cùng một vấn đề. Đây là giải pháp của tôi:

  1. Chỉnh sửa /etc/pathstập tin để bao gồm đường dẫn bổ sung mong muốn.

  2. Để cài đặt OSX, không chạy/Applications/eclipse/eclipse /Applications/eclipse/Eclipse.app


1
omg số 2 ở đây là giải pháp cho RẤT NHIỀU KHAI THÁC. Cảm ơn!!
Tommy

1
Tôi đã đăng ký vào trang web này để tôi có thể nâng cao câu trả lời này - mục số 2 đã sửa nó!
Iftah

Tôi có thể tìm thấy các đường dẫn / vv ở đâu?
John

1
@ John /etc/pathslà đường dẫn đầy đủ của tệp. Bạn có thể thực hiện Cmd + Shift + G và sau đó đặt "/ etc" vào đó và nhấn enter / return. Bạn phải tìm tập tin có tên "đường dẫn".
Sufian

6

Aha, tôi tìm thấy trang web này nói rằng

Lưu ý: Mac OS X không bao gồm / usr / local / bin trong PATH mặc định của nó. Do đó, giả sử bạn đang sử dụng shell bash mặc định, vui lòng nhập (hoặc bao gồm trong / etc / profile) export PATH = / usr / local / bin: $ PATH trước khi sử dụng bất kỳ công cụ nào trong số này.

Đây có phải là một điều thích hợp / không phù hợp để làm? Tôi nhận được rất nhiều chỉnh sửa các tập tin hệ thống trừ khi tôi thực sự biết những gì tôi đang làm. / usr / local / bin chỉ có thể ghi bằng root nên tôi sẽ không mở lỗ hổng bảo mật, phải không?


Kì lạ, tôi đã thêm đường dẫn xuất và nó không ảnh hưởng gì đến nhật thực chạy từ Dock. Ngoài ra tôi tìm thấy trang này về các đường dẫn và tệp / etc / path của tôi có

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

và những đường dẫn đó không xuất hiện trong nhật thực ... có cách nào dễ dàng để tạo / tìm tệp nhị phân in ra $ PATH, mà tôi có thể chạy từ Dock, vì vậy tôi có thể gỡ lỗi dễ dàng hơn không? Tôi không biết liệu Eclipse có xoay quanh con đường đó không.


2
+1 cho câu hỏi cuối cùng của bạn. Tôi đang tự hỏi làm thế nào để chẩn đoán các sự cố đường dẫn trong OS X không phải trong bash hoặc Terminal.
fideli

Lưu ý cho nhân viên Google trong tương lai: Apple hiện bao gồm /usr/local/binđầu tiên trong người dùng $PATH. (Xem tại đây .)
Telemachus

4

Nếu bạn đang ở trên Eclipse (được thử nghiệm với "Sao Hỏa"), bạn có thể thay đổi "Chạy cấu hình":

  1. Nhấp vào "Chạy" → "Chạy Cấu hình ..."
  2. Chọn cấu hình chạy phù hợp ở bên trái
  3. Bây giờ chọn tab "Môi trường"
  4. Nhấp vào "Mới ..."
  5. Trong trường "Tên", nhập "PATH"
  6. Bây giờ hãy đi đến Terminal của bạn, nhập "echo $ PATH" và sao chép kết quả
  7. Qua kết quả vào trường "Giá trị"
  8. Klick "OK"
  9. Quay lại tab "Môi trường", đảm bảo bạn chọn "Nối môi trường vào môi trường gốc"

Bây giờ Eclipse sử dụng các giá trị tương tự cho biến môi trường PATH như hệ thống của bạn. Hãy nhớ rằng: Điều này chỉ đúng với cấu hình chạy bạn đã chọn.

Như đã lưu ý trong câu hỏi của bạn, hãy kiểm tra Java bằng:

System.getenv();

2

Rất có thể, một trong các tập lệnh đăng nhập bash ( .bashrchoặc .bash_profile) của bạn đang thay đổi $PATH. Nếu bạn khởi động Eclipse từ thiết bị đầu cuối, nó có đi /usr/local/binvào đường dẫn của nó không?


1
gọi tốt Nếu tôi chạy Eclipse từ thiết bị đầu cuối, nó có / usr / local / bin trong đường dẫn. Bây giờ tôi phải làm sao? Không phải / usr / local / bin một cái gì đó nên có trong đường dẫn đến tất cả các ứng dụng? Tôi có thể đặt đoạn mã này vào tập lệnh nào, để nếu tôi chạy Eclipse từ Finder hoặc từ Dock, nó sẽ nằm trong đường dẫn?
Jason S

1
Ngoài ra, tôi không có .bashrc hoặc .bash_profile trong thư mục người dùng của mình.
Jason S

2

Mẹo này ở trên hoạt động với tôi: 1) thêm đường dẫn đến / etc / path dưới dạng root 2) bắt đầu nhật thực với $ ECL_HOME / Eclipse.app / Nội dung / MacOS / nhật thực thay vì $ ECL_HOME / Eclipse.app


Điều này làm việc cho tôi, cảm ơn bạn rất nhiều! Trong trường hợp của tôi, đường dẫn để chạy Eclipse là /Appluggest/Eclipse.app/Contents/MacOS/eclipse
Tsung-Ting Kuo

2

Ngoài ra, bạn có thể chỉ cần thêm một liên kết tượng trưng vào /usr/localthư mục của bạn trỏ đến ứng dụng của bạn.

Ví dụ: làm như root:

ln -s /Appluggest/Ph PhantomJS/ph Phantomjs-1.9.2-macosx / bin / ph Phantomjs / usr / local / ph Phantomjs

Điều này giúp tôi chạy (thử nghiệm mvn) ứng dụng PhantomJS bên ngoài từ bên trong một dự án Maven trong Eclipse.


Điều này dường như không có gì để làm với $PATHhoặc thư mục $PATHnhư thế nào /usr/local/bin. Bạn có thể vui lòng giải thích chi tiết hơn?
pabouk

bạn đặt một liên kết tượng trưng ở đâu đó trong đường dẫn, nó trỏ đến vị trí thực tế không nằm trong đường dẫn. Tôi đã làm điều đó trước đây, nó hoạt động cho các tệp thực thi duy nhất, không hoạt động cho một thư mục chứa đầy các tệp
Jason S


1

Eclipse NEON, mac OS X 10.11.6
Thiết bị đầu cuối trong Eclipse không thể sử dụng mvnlệnh. (Tôi tạo một liên kết mềm mvntrong /usr/local/bin)

Giải pháp tạm thời:

Nhấp chuột phải /Applications/eclipse-> hiển thị nội dung gói -> nội dung -> MacOS -> nhấp đúp eclipseđể bắt đầu.

Bắt đầu Eclipse theo cách này, Eclipse có thể phát hiện tất cả các cài đặt đường dẫn và sau đó tôi có thể sử dụng mvnlệnh trong thiết bị đầu cuối Eclipse ngay bây giờ.

Bạn có thể nhấp chuột phải vào eclipsethư mục này và tạo bí danh để bắt đầu thuận tiện.

Tôi không biết tại sao ngay bây giờ. Tôi nghĩ rằng đây nên là một BUG nhật thực.


0

chỉnh sửa ~/.bash_profileđể bao gồm đường dẫn

thay vì bắt đầu trong launchpad,

mở terminal và khởi động nó như

/Applications/Eclipse.app/Contents/MacOS/eclipse

Điều đó đã đánh lừa tôi.


0

Kết hợp một vài câu trả lời và cập nhật thành một cái gì đó dễ dàng:

  1. Nhấn chuột phải vào Eclipse.app và chọn "Hiển thị nội dung gói"
  2. Điều hướng đến Nội dung / MacOS để tìm "nhật thực".
  3. Nhấp chuột phải và chọn "Tạo bí danh", hoặc kéo và thả nó trong khi giữ lệnh và tùy chọn.
  4. Đặt bí danh ở đâu đó thuận tiện, như quay lại trong Ứng dụng.
  5. Nhấp đúp để khởi chạy.
  6. Không có Bước 6!

Điều này không chỉ mở một cửa sổ Terminal tiện dụng hiển thị đầu ra Eclipse thô, nó sẽ tự động chấp nhận bất kỳ đường dẫn nào bạn đã đặt trong trình đăng nhập của mình.

Vì vậy, bạn có thể sử dụng bất kỳ phương pháp thông thường để thiết lập đường dẫn của bạn (chỉnh sửa /etc/pathshoặc ~/.bash_profilehoặc chỉ cài đặt cũng cư xử công cụ dòng lệnh như mbed), và lo lắng không xa hơn. Nếu bạn có thể gọi nó từ Terminal thì Eclipse cũng có thể gọi nó.

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.