Đặt biến môi trường PATH trong OSX vĩnh viễn


140

Tôi đã đọc một số câu trả lời về cách đặt các biến môi trường trên OSX là vĩnh viễn.

Đầu tiên, tôi đã thử cách này, Làm cách nào để đặt $ PATH vĩnh viễn trên Linux / Unix? nhưng tôi đã có một thông báo lỗi nói no such file and directory, vì vậy tôi nghĩ rằng tôi có thể thử ~/.bash_profilethay vì ~/.profilenhưng nó không hoạt động.

Thứ hai, tôi đã tìm thấy giải pháp này Cách đặt $ PATH được sử dụng bởi các ứng dụng trong os x , khuyên bạn nên thay đổi trong

~ / .MacOSX / môi trường.plist

nhưng một lần nữa tôi đã có no such file and directorylỗi.

Tôi cần một cách để đặt các biến này sao cho không cần phải đặt lại nhiều lần mỗi khi tôi mở phiên cuối mới.


bạn chỉ có thể tạo ~ / .profile hầu hết các hệ thống * nix nhận ra tệp và sử dụng nó nếu nó tồn tại. bạn có thể cần khởi động lại mặc dù
trve.fa7ad

~ / .MacOSX / môi trường.plist không được dùng nữa.
Pierre ALebarÈDE

Câu trả lời:


257

Bạn phải thêm nó vào /etc/paths.

Tham khảo (hoạt động cho tôi): Tại đây


6
Đây là giải pháp duy nhất hoạt động trên El Capitan. Tốt hơn là sửa đổi .bash_profile.profile.
IgorGanapolsky

1
Nâng cao câu trả lời cho tham chiếu được thêm vào, giải thích cách loại bỏ các thành phần khỏi đường dẫn (trong các bình luận).
Amudhan

Điều này đã làm việc trong EL Capitan. Đóng tất cả các thiết bị đầu cuối và mở một thiết bị đầu cuối mới để kiểm tra echo $ PATH.
Prem Ananth C

Câu trả lời là 5 tuổi nhưng nó vẫn là giải pháp đơn giản và dễ dàng nhất. Cảm ơn câu trả lời + tài liệu tham khảo
Rachit Magon

Đừng quên 'khởi động lại' thiết bị đầu cuối của bạn.
Neeraj Singh

27

Tôi đã thấy rằng có một số tệp có thể ảnh hưởng đến $PATHbiến trong macOS (hoạt động với tôi, 10.11 El Capitan), được liệt kê bên dưới:

  1. Như câu trả lời được bình chọn hàng đầu đã nói, vi /etc/pathsđược đề xuất theo quan điểm của tôi.

  2. Cũng đừng quên /etc/paths.dthư mục chứa các tệp có thể ảnh hưởng đến $PATHbiến, đặt gitmono-commandđường dẫn trong trường hợp của tôi. Bạn có thể ls -l /etc/paths.dliệt kê các mục và rm /etc/paths.d/path_you_dislikeđể loại bỏ các mục.

  3. Nếu bạn đang sử dụng môi trường "bash" ( Terminal.appví dụ mặc định ), bạn nên kiểm tra ~/.bash_profilehoặc ~/.bashrc. Có thể chưa có tệp đó, nhưng hai tệp này có hiệu ứng trên $PATH.

  4. Nếu bạn đang sử dụng môi trường "zsh" ( ví dụ Oh-My-Zsh ), bạn nên kiểm tra ~./zshrcthay vì ~/.bash*điều đó.

đừng quên khởi động lại tất cả các cửa sổ đầu cuốiecho $PATH . Các $PATHchuỗi sẽ PATH_SET_IN_3&4:PATH_SET_IN_1:PATH_SET_IN_2.

Lưu ý rằng hai cách đầu tiên ( /etc/paths/etc/path.d) nằm trong /thư mục sẽ ảnh hưởng đến tất cả các tài khoản trong máy tính của bạn trong khi hai cách cuối ( ~/.bash*hoặc ~/.zsh*) nằm trong ~/thư mục (aka, /Users/yourusername/) sẽ chỉ ảnh hưởng đến cài đặt tài khoản của bạn.

Đọc thêm: Mac OS X: Đặt / Thay đổi biến $ PATH - nixCraft


2
Tôi khá thích chỉnh sửa .bash_profile trong một số trường hợp, vì sau đó nếu bạn có hai tài khoản người dùng trên máy của mình, bạn có thể thêm tập lệnh chỉ cho một trong số họ trong ví dụ ~ / dev / scripts
PeteW

Những gì tôi đã không nhận ra là tôi đã sử dụng zsh thay vì bash. cảm ơn!
Sư tử

11

Bạn cũng có thể thêm cái này

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

đến ~/.bash_profile, sau đó tạo ~/.bashrcnơi bạn có thể chỉ cần thêm đường dẫn vào PATH. Một ví dụ với.

export PATH=$PATH:.

Cảm ơn bạn. Tôi đã sử dụng giải pháp trước đó, nhưng nếu tôi áp dụng phương pháp này, điều đó có nghĩa là tôi cũng có thể đặt các biến DYLD_LIBRARY_PATH là vĩnh viễn không?
patti_jane 17/03/14

Có bạn sẽ có thể. Nếu bạn muốn xem các thay đổi, hãy đóng thiết bị đầu cuối của bạn và mở lại hoặc nhập. ~/.bashrc
omoman 17/03/2016

Tôi thêm mã ở trên vào . ~/.bash_profile, sau đó mở lại thiết bị đầu cuối và gõ . ~/.bashrc, nhưng nó nói không có tập tin hoặc thư mục như vậy?
patti_jane

Bạn cần tạo ra nó. Các dòng trên cho biết bạn .bash_profiletải .bashrcnếu nó tồn tại. Sau đó vào chỗ trống .bashrc, bạn có thể thêm bất cứ thứ gì bạn muốn.
omoman

Cảm ơn rất nhiều! Tôi biết tôi đang hỏi quá nhiều, nhưng bạn có biết một liên kết nơi nó được nêu đúng cách tạo ra .bashrckhông? Tôi không thể tìm thấy một cái tốt.
patti_jane

8

Bạn có thể mở bất kỳ tệp nào sau đây:

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

Và thêm:

export PATH="$PATH:your/new/path/here"

7

Đối với một đường dẫn mới được thêm vào biến môi trường PATH trong MacOS, chỉ cần tạo một tệp mới trong /etc/paths.dthư mục và thêm đường dẫn ghi được đặt trong tệp. Khởi động lại thiết bị đầu cuối. Bạn có thể kiểm tra echo $PATHtại dấu nhắc để xác nhận xem đường dẫn đã được thêm vào biến môi trường chưa.

Ví dụ: để thêm một đường dẫn mới /usr/local/sbinvào PATHbiến:

cd /etc/paths.d
sudo vi newfile

Thêm đường dẫn đến newfilevà lưu nó.

Khởi động lại thiết bị đầu cuối và gõ echo $PATHđể xác nhận


Tôi không chắc tại sao câu trả lời này lại bị hạ thấp. Có vẻ như một cách hợp lý và lành mạnh để tổ chức các biến đường dẫn. Tôi đã sử dụng path.d để tạo các tệp riêng lẻ cho mỗi biến đường dẫn không chuẩn.
p_q

1

tôi đã thử phương thức đầu tiên và đi qua trang tham chiếu, thực hiện tốt cài đặt đường dẫn. Nhưng nó không đi theo đường dẫn được đặt khi tôi lặp lại $ PATH


1
Bạn đã đóng thiết bị đầu cuối và khởi động lại, hoặc gọi sourceđể tải môi trường mới?
Dom

yaa..kết thúc thiết bị đầu cuối..nhưng biến PATH lại không tồn tại
IgnitedMind 5/08/2015

Vỏ của bạn là gì? Kiểm tra với ps -p $$. Nếu nó không phải là bash, các tệp khởi động được đặt tên khác.
Pierre ALebarÈDE

0

Để thiết lập đường dẫn trong Mac, hai phương thức có thể được theo sau.

  1. Tạo một tệp cho tên biến và dán đường dẫn ở dưới /etc/paths.d và nguồn tệp vào profile_bashrc.
  2. Con đường xuất khẩu biến trong ~/.profile_bashrcnhư

    xuất VARIABLE_NAME = $ (PATH_VALUE)

VÀ nguồn đường dẫn. Nó đơn giản và ổn định.

Bạn có thể đặt bất kỳ path variablebằng Mac terminalhoặc trong linuxcũng.

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.