Làm cách nào để thay đổi biến môi trường PATH thành OS X 10.8 Mountain Lion sẽ hiển thị cho các ứng dụng GUI? [bản sao]


14

Tôi đã thử tất cả các phương pháp mà tôi đã nghe nói để thiết lập các biến môi trường trên OS X 10.8 nhưng dường như không có phương pháp nào hoạt động.

Để kiểm tra, hãy chạy một tập lệnh bash từ bên trong một ứng dụng gui như Eclipse hoặc IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Những thứ tôi đã thử nghiệm và nó không hoạt động ngay cả sau khi khởi động lại:

  • /etc/paths/etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (số nhị phân được thực hiện theo khuyến nghị)
  • chạy launchctl setenv PATH $PATHtừ dòng lệnh, điều này được cho là để cập nhật PATH cho các ứng dụng GUI, ít nhất là cho phiên hiện tại. Đoán xem, không thay đổi.

Có vẻ như PATH luôn PATH=/usr/bin:/bin:/usr/sbin:/sbindành cho các ứng dụng GUI.


Bạn có ổn với giải pháp đặt đường dẫn bash không hoặc bạn có thực sự cần thay đổi giá trị của launchd của đường dẫn cơ sở cho tất cả các quy trình không?
bmike

Tôi cần thay đổi PATH được sử dụng bởi các ứng dụng GUI, cho terminal / bash / ... Tôi đã có một bộ giải pháp làm việc lớn.
sorin

Tôi không biết tại sao nhật thực và những người khác không chỉ hỗ trợ các biến môi trường thời gian chạy, vì vậy mọi nhà phát triển java trên Mac không cần phải lo lắng về việc đặt đường dẫn hoặc tìm nguồn cung ứng trong các biến mong muốn của họ trong mỗi dự án.
bmike

Câu trả lời:


8

Với Mountain Lion /etc/launchd.conflà nơi bạn nên đặt Đường dẫn ứng dụng GUI. Hãy nhớ rằng nó không phải là một tập tin kịch bản; nó chỉ hỗ trợ launchctlcác lệnh vì vậy bạn nên viết một cái gì đó như:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

Cũng lưu ý rằng nó không hỗ trợ thay thế biến môi trường vỏ (như $PATH) vì vậy bạn sẽ phải đặt mọi đường dẫn mà bạn muốn đưa vào. Đó là một ý tưởng tốt để giữ các đường dẫn ban đầu mà bạn đã đề cập ( /usr/bin:/bin:/usr/sbin:/sbin).

Bạn sẽ phải khởi động lại sau khi thay đổi (hoặc tạo) tệp để các thay đổi có hiệu lực.


Điều này đã làm việc với tôi trong 10.8.2 để thiết lập một PATH có thể sử dụng được với Bàn phím Maestro.
TJ Luoma

Trang nam nói rằng bạn có thể sử dụng $ HOME / .launchd.conf nhưng điều đó không hiệu quả với tôi. Sử dụng /etc/launchd.conf đã làm. Tôi vào ngày 10.8.4
pedz

Nó không hoạt động với tôi:-bash: setenv: command not found
Colas

Nếu bất cứ ai bị nhầm lẫn như Colas, setenvlà một launchctllệnh, vì vậy bạn sử dụng nó như thế nào launchctl setenv.
Jon Shier

3

Nó hoạt động nếu bạn gọi ứng dụng GUI từ Terminal:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

nhập mô tả hình ảnh ở đây

Không thực sự tốt đẹp hoặc thoải mái nhưng nó làm công việc nếu cần.


Một thời gian ngắn KHÔNG CÓ CÁCH. Tôi không sẵn sàng để làm điều này, đôi khi nó sẽ chỉ hoạt động. Ứng dụng cũng có thể được bắt đầu khi bạn bấm vào một tập tin.
sorin

2
Như tôi đã nói nó không thật sự tốt đẹp nhưng có thể làm việc cho đến khi Apple sửa chữa vấn đề này (vì nó nên có thể với launchctl).
nohillside

2

Tôi đã nấu một giải pháp khác, lấy cảm hứng từ patrix ở đây , hy vọng sẽ bớt đau hơn một chút. Mở Automator, chọn một ứng dụng làm mục tiêu và chọn Execute Shell script(hoặc bất cứ thứ gì nó được gọi, trong tiếng Đức, đó là "Shell-Skript ausführen" như có thể thấy ở trên) như là hành động. Trong kịch bản, chỉ cần gõ

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Sau đó lưu toàn bộ mọi thứ bạn muốn và nếu bạn cần chạy YourApplicationHere , hãy mở "ứng dụng tự động hóa" đã tạo.

Tôi đã thử nghiệm điều này với Terminaltên YourApplicationHere và thấy launchctl exportrằng FOO thực sự đã được đặt thành thanh . Tôi hy vọng nó cũng làm việc cho những người khác.

Cuối cùng, nếu bạn sử dụng giải pháp này cho các biến môi trường của mình, thay vì nhập launchctlnội dung trong tập lệnh shell, bạn có thể chỉ cần gọi /Users/Shared/conflaunchd.sh(mà bạn phải tạo trước, cùng với tệp mô tả các biến).


-1

Giả sử, launchctlcung cấp PATHcho Ứng dụng GUI. Để đặt đường dẫn đến đường dẫn shell, hãy thêm đoạn sau vào tệp RC shell của bạn sau khi đặt đường dẫn của bạn:

launchctl setenv PATH $PATH

1
Thật không may, điều này không hoạt động :-(
nohillside


Chúng tôi cho phép câu trả lời làm cho một nỗ lực đức tin tốt để giải quyết câu hỏi. Chúng tôi thậm chí cho phép câu trả lời sai và để cho việc bỏ phiếu nói cho chính xác. Bình luận mà không làm cho nó cá nhân là cách tốt nhất để chọc một lỗ hổng trong một cuộc tranh luận bị lỗi thay vì cố gắng để trả lời.
bmike
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.