Làm cách nào để sửa đổi PATH của tôi để các thay đổi có sẵn trong mỗi phiên Terminal


53

Tôi muốn thêm một thư mục để tìm kiếm đường dẫn tìm kiếm của tôi. Tôi biết tôi phải sửa đổi PATHbiến môi trường. Tuy nhiên, tôi muốn thay đổi là vĩnh viễn, để nó luôn có hiệu lực, cho mọi cửa sổ Terminal (bash) tôi mở.

Có quá nhiều thông tin khó hiểu và có thể xung đột trong https://help.ubfox.com/community/EnvirVariables

Tôi đang sử dụng Ubuntu 10.04. Giả sử tôi muốn thêm /usr/local/foovào PATH. Những tập tin ( .bashrc, .profile, .bash_login, vv ...) Tôi nên thay đổi và những gì các dòng mới (s) nên xem xét như thế nào?

Câu trả lời:


70

Lệnh sau thêm đường dẫn đến đường dẫn hiện tại của bạn:

export PATH=$PATH:/my/custom/path

Nếu bạn muốn thiết lập của mình thực thi lệnh này mỗi lần, có một số nơi bạn có thể đặt nó. Khi bạn đăng nhập, các tập lệnh sau sẽ được thực hiện theo thứ tự này:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

Ghi chú

  • ~/.profile chỉ được tải nếu ~/.bash_profile~/.bash_loginKHÔNG EXIST. Nếu không, ít nhất là bash, sẽ tải chúng thay thế. Đó là khuyến khích để sử dụng .profilevà không phải các tập lệnh cụ thể bash. Vì vậy, nếu trong những lần thử này bạn đã tạo .bash_login, hãy xóa nó ngay bây giờ.

  • ~/.bashrcchỉ được tải nếu bạn đang chạy một phiên tương tác. (một cái gì đó với một dấu nhắc nơi bạn thực sự có thể gõ một cái gì đó).

  • ~/.bashrcđược tải đi tải lại, mỗi khi bạn mở một thiết bị đầu cuối mới . Vì vậy, một tab mới trong gnome-terminal, một thiết bị ảo mới, v.v. Vì vậy, ngay cả khi bạn không đăng nhập lại, .bashrcvẫn được tải (và do đó đặt lại môi trường của nó) mỗi khi bạn mở một shell mới.

  • Những thứ như byobu nên thực sự đi vào .profile, (nếu không nó sẽ không hoạt động ;-)

  • Những thứ như đường dẫn nên đi vào .profilenếu bạn muốn chúng hoạt động bên ngoài các phiên tương tác. (nói khi bạn nhấn Alt+ F2trong Gnome)


Tôi sẽ đánh dấu đây là câu trả lời nếu bạn cập nhật nó để bao gồm dòng xuất được yêu cầu nên được thêm vào .profile.
Joshua Flanagan

Điều này được sử dụng chỉ hợp lệ cho đăng nhập bảng điều khiển (ví dụ: ssh hoặc các thiết bị đầu cuối ảo có thể truy cập cho Ctrl + Alt + Fx). Tôi không biết rằng các nguồn / etc / gdm / Xsession ~ / .profile những ngày này. Khéo léo!
Marius Gedminas

Vâng, tôi đã không đề cập cụ thể / etc / gdm / Xsession hoặc ~ / .Xprofile vì có nhiều cách tốt hơn để khởi chạy chương trình đồ họa khi khởi động, điều này đảm bảo rằng phần còn lại của môi trường đã được tải.
Ralf

1
để làm cho câu trả lời này toàn diện hơn, vui lòng thêm nhận xét của MattH về tìm nguồn cung ứng ~ / .profile để kích hoạt các thay đổi mà không cần chu trình đăng xuất / bật.
matt wilkie

1
@schwiz: ~/.profilekhông được thực thi trên mỗi thiết bị đầu cuối, nó được thực thi trước, khi phiên máy tính để bàn của bạn bắt đầu. Cái được thực hiện trên mọi thiết bị đầu cuối là~/.bashrc
MestreLion

13

Tôi đã làm cho nó hoạt động bằng cách sửa đổi ~/.profile

Có vẻ như việc thêm ~ / bin vào đường dẫn của tôi là một ví dụ tồi, vì đã có mã trong ~ / .profile để tự động làm điều đó, nếu thư mục tồn tại.

Để thêm thư mục usr / local / foo vào đường dẫn của tôi cho mỗi phiên tiếp theo, tôi thêm / chỉnh sửa dòng sau vào cuối .profile của tôi:

export PATH=$PATH:/usr/local/foo

Tuy nhiên, để làm cho điều này có hiệu lực, tôi cần phải đăng xuất và đăng nhập lại (chỉ cần đóng cửa sổ Terminal và mở một cái mới KHÔNG hoạt động).


4
Làm điều đó export PATH="$PATH:/usr/foo", trong trường hợp bạn từng có không gian hoặc các ký tự đặc biệt khác $PATH.
Gilles 'SO- ngừng trở nên xấu xa'

3
Bạn có thể tải lại môi trường hiện tại mà không cần đăng xuất bằng cách nhập ". ~ / .Pprile"
Matt H

1
@MattH: không bạn không thể. nếu bạn nguồn ~/.profiletại một nhà ga nào đó, nó sẽ có hiệu lực cho rằng thiết bị đầu cuối chỉ
MestreLion

@MestreLion - bạn nói đúng. Tôi đã đề cập đến nó để thuận tiện cho các thiết bị đầu cuối hiện tại. Quên thêm điều đó.
Matt H

Điều gì xảy ra nếu tôi đã có một cái gì đó trong PATH? Tôi có thể nối thêm nó như PATHS hoạt động trong Windows không? Ví dụ tôi đã có PATH="$HOME/bin:$HOME/.local/bin:$PATH"rồi.
Hội chợ Gabriel

4

Để tải lại .profile và thay đổi hiệu ứng mà không cần đăng xuất / đăng nhập, hãy chạy:

source ~/.profile

đây nên là một bình luận cho câu trả lời trước
Pavlo Zhukov

3

Bạn có thể thêm đường dẫn đến /etc/environment, nhưng lưu ý rằng không có phần mở rộng shell nào hoạt động; biến sẽ được đặt thành nghĩa đen của các ký tự bạn nhập.


Trong hai phương thức (thêm lệnh xuất trong .profile và thêm tên đường dẫn đầy đủ vào PATH trong vv / môi trường), nên chọn phương thức nào?
Rohan Bhatia

2

Youcan sửa đổi các .bashrctập tin trong $HOMEthư mục của bạn .

Ở phần cuối của tệp này, thêm dòng:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

Bạn cũng có thể sửa đổi .profiletệp, cũng trong $HOMEthư mục của bạn , bao gồm dòng sau:

PATH="$HOME/directory_to_include_in_path/:$PATH"

Điều này làm việc cho tôi.


2
Tôi không thấy những gì điều này thêm vào các câu trả lời khác mà giải thích kỹ hơn.
Zanna

Đây là câu trả lời đúng nếu bạn muốn thay đổi ảnh hưởng đến các cửa sổ đầu cuối. Thay đổi .profilekhông có hiệu lực trong các cửa sổ đầu cuối.
Markus Laire

0

Nếu bạn có ohmyzsh hãy xem thư mục chính của bạn thông qua thiết bị đầu cuối và gõ

nano .zshrc

Cuối tập tin nhập

xuất PATH = "$ HOME / thư mục_to_include_in_path /: $ PATH"

Cuối cùng khởi động lại thiết bị đầu cuối của bạn. Đã làm cho tôi. Hy vọng điều này là hữu ích.


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

Điều này là không chính xác và sẽ không hoạt động. Mở rộng tham số không được thực hiện trong/etc/environment
Zanna
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.