Làm thế nào tôi có thể thêm một đường dẫn đến biến môi trường PATH?


11

Tôi muốn thêm một đường dẫn đến PATHbiến môi trường?

Tôi đã thử với export PATH=/mypath:$PATHvà nó hoạt động. Nhưng lần sau khi tôi khởi động Terminal, đường dẫn mới của tôi không còn là PATHbiến môi trường nữa.

Làm thế nào tôi có thể thêm một đường dẫn đến PATHbiến môi trường? và nó cũng sẽ ở đó vào lần tới khi tôi khởi động Terminal.


Bây giờ tôi lại gặp vấn đề với điều này một lần nữa, thủ thuật hoạt động trước đây dường như không còn hiệu quả nữa.

Tôi đã thử với:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

để thêm hai biến môi trường. Sau đó, ~/.profile-file của tôi có nội dung này:

export GRADLE_HOME=/Users/jonas/gradle-1.2/
export PATH=GRADLE_HOME/bin:$PATH

Nhưng khi tôi khởi động một cửa sổ Terminal mới và gõ gradle(lệnh tôi đã thêm vào PATH), tôi nhận được một thông báo rằng lệnh không tồn tại. Nếu tôi chạy lệnh từ /Users/jonas/gradle-1.2/binnó hoạt động tốt!


Nếu bạn
tình cờ làm hỏng

1
Việc gán cho PATH (xuất thứ hai) phải bằng $ GRADLE_HOME
nohillside

Câu trả lời:


5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile Nên làm thủ thuật!

Nếu bạn đã sử dụng echo 'export PATH=/my/path:$PATH' > ~/.bash_profilehoặc bất kỳ biến thể nào như vậy, bạn sẽ ghi đè lên nội dung của hồ sơ của bạn!


9

OSX đọc các tệp sau theo thứ tự khi thiết bị đầu cuối mở:

/etc/profile
~/.bash_profile
~/.bash_login   
~/.profile     

Vì vậy, đặt con đường bổ sung của bạn vào một trong những điều này. Tôi thường đưa bổ sung vào~/.bash_profile


2
Cảm ơn, tôi đã sử dụngecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas

3

Ngoài các địa điểm được đề cập bởi @RobZolkos, vỏ đăng nhập cũng nhìn vào /etc/pathsvà các tệp bên trong /etc/paths.d/. Một mục nhập đường dẫn trên mỗi dòng trong các tệp này.

Xem /etc/profiletrang hướng dẫn cho path_helper.


Được rồi cảm ơn! nhưng vấn đề lớn nhất là làm thế nào để thêm đường dẫn. Nhưng tôi đã tìm thấyecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas

@Jonas: Tôi nhận ra rằng vấn đề của bạn đã được giải quyết. Câu trả lời của tôi là vì lợi ích của độc giả trong tương lai, vì vậy họ có thể thấy tất cả các tùy chọn có sẵn cho họ.
Harald Hanche-Olsen

2

Câu hỏi cũ nhưng, đối với người dùng MacOS X Catalina:

Tạo / chỉnh sửa ~/.zshenv:

# comment for yourself
PATH="$PATH:to/your/path"

Lưu ý rằng sửa đổi PATHtrong ~/.zprofilehoặc ~/.zshrckhông chính xác, nó nên được ~/.zshenv.

Nếu bạn cần thêm một cái gì đó vào PATH, hãy tạo / chỉnh sửa thêm ~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

Tham khảo: http://zsh.sourceforge.net/Intro/intro_3.html


Bạn có ý nghĩa gì với "Nếu bạn cần phải trả trước cho PATH" và tại sao điều này không thể được thực hiện .zshenv?
nohillside

@nohillside: Xin lỗi vì ngữ pháp xấu của tôi, nhưng câu hỏi hay. Nếu bạn cố gắng thêm vào trước một cái gì đó vào PATHtrong ~/.zshenvbởi PATH="to/your/path:$PATH", nếu không có sự dòng trong ~/.zprofile, nó sẽ không làm việc. Một cái gì đó gọi path_helpersẽ di chuyển những người /usr/local/bin/:/usr/bin:...đến phía trước PATH.
Mưa

Trong ngắn hạn, đó là một vấn đề của thứ tự tải. path_helpersẽ được thực hiện sau ~/.zshenvnhưng trước ~/.zproflie. Và từ nghiên cứu của tôi hôm nay tôi sẽ khuyên bạn nên sử dụng symlink thay vì sửa đổi PATH, điều này đơn giản hơn nhiều.
Mưa

0

Chèn vào .bashrc các dòng mã này:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"
       fi
  fi
}

sau đó nhập một lệnh như: pathadd /opt/local/binhoặc pathadd /opt/local/bin after.


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.