Làm thế nào để thêm một thư mục vào PATH?


731

Làm cách nào để thêm thư mục $PATHvào Ubuntu và thay đổi vĩnh viễn?


2
help.ubfox.com/community/EnvirVariabled Có tất cả những gì bạn cần biết. Tôi phát hiện ra rằng rất nhiều đầu vào ở đây không chính xác hoặc ít nhất phương pháp không được đề xuất. Đây là một thông tin tuyệt vời sẽ cho phép bạn tìm ra nơi để sửa đổi biến môi trường của bạn dựa trên lý do bạn đang làm và chính xác làm thế nào để làm điều đó mà không làm hỏng mọi thứ (như tôi đã làm theo một số lời khuyên tồi đã nói ở trên). Vì vậy, lâu dài và cảm ơn cho tất cả các cá!
Bus42

Câu trả lời:


456

Sử dụng ~ / .profile để đặt $ PATH

Một đường dẫn được đặt .bash_profilesẽ chỉ được đặt trong shell đăng nhập bash ( bash -l). Nếu bạn đặt đường dẫn của mình vào .profileđó, nó sẽ có sẵn cho phiên máy tính để bàn hoàn chỉnh của bạn. Điều đó có nghĩa là thậm chí sự khôn ngoan sẽ sử dụng nó.

Ví dụ ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Btw, bạn có thể kiểm tra biến PATH của một quá trình bằng cách xem xét môi trường của nó trong /proc/[pid]/environ(thay thế [pid] bằng số từ ps axf). Ví dụ: sử dụnggrep -z "^PATH" /proc/[pid]/environ

Ghi chú:

bashnhư một vỏ đăng nhập không phân tích cú pháp .profilenếu một trong hai .bash_profilehoặc .bash_logintồn tại. Từ man bash:

nó tìm ~ / .bash_profile, ~ / .bash_login và ~ / .profile, theo thứ tự đó, đọc và thực thi các lệnh từ lệnh đầu tiên tồn tại và có thể đọc được.

Xem câu trả lời bên dưới để biết thông tin về .pam_environmenthoặc .bashrcvề các vỏ không đăng nhập tương tác hoặc đặt giá trị toàn cầu cho tất cả người dùng bằng cách đặt tập lệnh vào /etc/profile.d/hoặc sử dụng /etc/X11/Xsession.d/để ảnh hưởng đến phiên của trình quản lý hiển thị.


5
Thật tuyệt, điều đó đã làm việc. Tôi đã thấy nơi nó sẽ tự động thêm bin dir nếu tôi tạo nó vì vậy tôi chỉ sử dụng nó thay vì các tập lệnh. TY.
justingrif

5
Trên Xbunutu .profile không được thực thi nên tôi đặt nó vào .bashrc và nó hoạt động.
tekumara

13
Phần tài liệu này được thực hiện rất tốt: Tài liệu chính thức về biến môi trường . Xem xét việc đọc nó (không có nghĩa là được cập nhật lên phiên bản cuối cùng của quy tắc để thêm giá trị vào biến môi trường).
Michele

3
Trường hợp trong .profile chúng ta thêm đường dẫn ??
Vine Kaushik

3
Tôi vẫn không biết nên thêm phần đường dẫn thêm của mình vào đâu. Tôi cần thêm SDK Android vào đường dẫn của mình ... PATH="$HOME/bin:$PATH"Vậy tôi có thêm nó vào không?
Jamie Hutber

303

Chỉnh sửa .bashrctrong thư mục nhà của bạn và thêm dòng sau:

export PATH="/path/to/dir:$PATH"

Bạn sẽ cần nguồn .bashrchoặc đăng xuất / đăng nhập (hoặc khởi động lại thiết bị đầu cuối) để các thay đổi có hiệu lực. Để nguồn của bạn .bashrc, chỉ cần gõ

$ source ~/.bashrc

3
Làm thế nào để bạn "nguồn của bạn .bashrc"? Làm thế nào để bạn "khởi động lại thiết bị đầu cuối"?
đẳng cấu

3
Trong bash nó chỉ đơn giản là '. .bashrc '
Ophidian

1
Tôi đã đưa ra giả định rằng bạn đang ở trong thư mục nhà của bạn. vì đó là nơi .bashrc bạn muốn chỉnh sửa.
Ophidian

21
.bashrckhông phải là nơi thích hợp để thiết lập các biến môi trường. Họ nên đi vào .profilehoặc .pam_environment. Xem mywiki.wooledge.org/DotFiles
geirha

4
@LaoTzu . .bashrckhông .bashrc:) hoặc source .bashrccho vấn đề đó
Znarkus

120

Vị trí được đề xuất để xác định các biến môi trường toàn hệ thống , vĩnh viễn áp dụng cho tất cả người dùng là:

/etc/environment

(đó là nơi mặc định PATHđược xác định)

Điều này sẽ hoạt động trong máy tính để bàn hoặc bàn điều khiển, gnome-terminal hoặc TTY, mưa hoặc nắng;)

  • Để chỉnh sửa, nhấn Alt+ F2và gõ:

    gksudo gedit /etc/environment
    

    (hoặc mở tệp bằng sudotrình soạn thảo văn bản yêu thích của bạn)

Để thay đổi hiệu ứng, chạy . /etc/environment. Vì tệp này chỉ là một tập lệnh đơn giản, nó sẽ chạy và gán đường dẫn mới cho PATHbiến môi trường. Để kiểm tra chạy env và xem PATHgiá trị trong danh sách.

Liên quan:


6
và sau đó bạn cần khởi động lại để các thay đổi có hiệu lực ...
Lee

2
Đây chính xác là những gì tôi cần. Cung cấp một hình ảnh vm vứt đi thông qua vagrant và cần thiết để thêm nút và npm vào đường dẫn.
Austin cầu nguyện

7
Để có những thay đổi trong hiệu ứng chạy. / etc / môi trường (có, dấu chấm, khoảng trắng và / etc / môi trường). Vì tệp này chỉ là một tập lệnh đơn giản, nó sẽ chạy và gán đường dẫn mới cho biến môi trường PATH. Để kiểm tra chạy env và xem giá trị PATH trong danh sách.
WindRider

1
Tôi cần phải chạy source /etc/environmentđể tải lại các thay đổi
JohnnyAW

@JohnnyAW: nguồn tương đương với dấu chấm ban đầu, xem ví dụ en.wikipedia.org/wiki/Source_(command) .
Roland Sarrazin

58

Tôi nghĩ rằng cách thức kinh điển trong Ubuntu là:

  • tạo một tập tin mới dưới /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • thêm vào đó:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • và cho phép nó thực thi

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

20
Thông thường sẽ an toàn hơn khi thêm đường dẫn tùy chỉnh của bạn vào cuối PATH thay vì bắt đầu. Điều này tránh việc vô tình thay thế các lệnh hệ thống bằng các chương trình của bạn (hoặc các chương trình độc hại của người khác). Điều này cũng tránh được nhiều nhầm lẫn khi người khác làm việc trên hệ thống của bạn (hoặc cho bạn lời khuyên) và họ nhận được kết quả bất ngờ từ các lệnh bạn đã "thay thế".
Joe

47

Đối với những người mới hoàn toàn (như tôi), người thoải mái hơn với GUI:

  1. Mở $HOMEthư mục của bạn .
  2. Chuyển đến XemHiển thị tệp ẩn hoặc nhấn Ctrl+ H.
  3. Nhấp chuột phải vào .profilevà nhấp vào Open With Text Editor .
  4. Cuộn xuống phía dưới và thêm PATH="$PATH:/my/path/foo".
  5. Lưu lại.
  6. Đăng xuất và đăng nhập lại để áp dụng các thay đổi (hãy để Ubuntu thực sự tải .profile).

4
Chỉnh sửa file .profile không được khuyến khích anymore.You vẫn có thể sử dụng phương pháp này để chỉnh sửa file .pam_environment xem: help.ubuntu.com/community/EnvironmentVariables
PulsarBlow

Cảm ơn @PulsarBlow! Tôi không thực sự chắc chắn chính xác sự khác biệt và lợi ích dù là những gì ... Đây là địa chỉ trực tiếp đến các phần có liên quan: help.ubuntu.com/community/...
dain

1
Câu trả lời này khiến hệ thống của tôi ngừng đăng nhập do tất cả các đường dẫn bị ghi đè. Sử dụng Ubuntu 16.04.
Frĩa đĩa

1
@Frisbetarian bạn phải chắc chắn để thêm $PATH:chút trong đó bao gồm các định nghĩa PATH hiện
dain

@dain: bình luận của bạn đã cứu mạng tôi!
Py-ser

46

Đối với các biến môi trường liên tục chỉ có sẵn cho người dùng cụ thể. Tôi đánh giá cao tài liệu chính thức của Ubuntu.

https://help.ubfox.com/community/En MôiVariables

Tham khảo tài liệu ở trên, tôi đã thiết lập các công cụ đường dẫn SDK Android của mình bằng cách:

  1. tạo ~/.pam_environmenttập tin trong thư mục nhà.
  2. nội dung của nó là PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. đường dẫn người dùng tùy chỉnh bổ sung có thể được thêm bằng cách tách đường dẫn bằng dấu hai chấm (:) .
  4. điều này đòi hỏi phải đăng nhập lại , có nghĩa là bạn cần đăng xuất và đăng nhập trở lại môi trường máy tính để bàn.

1
Đây là câu trả lời tốt nhất.
Paulo Coghi

26

Đặt dòng đó trong ~/.bashrctập tin của bạn .

Nó có nguồn gốc bất cứ khi nào bạn mở một thiết bị đầu cuối

EDIT : Dựa trên các nhận xét bên dưới, để có cài đặt chung hơn sẽ áp dụng cho tất cả các shell (bao gồm cả khi bạn nhấn Alt- F2trong Unity), hãy thêm dòng vào ~/.profiletệp của bạn . Có lẽ không nên làm cả hai, tuy nhiên, đường dẫn sẽ được thêm hai lần vào PATHmôi trường của bạn nếu bạn mở một thiết bị đầu cuối.


1
Trên thực tế, tôi nghĩ rằng bạn đặt đường dẫn trong $HOME/.profilecài đặt cá nhân hoặc /etc/profilecho tất cả người dùng. Nhưng nếu nó chỉ cần cho bash, tôi cho rằng một trong hai sẽ hoạt động.
Marty Fried

1
Nếu bạn đặt nó vào ~/.bashrc, nó sẽ chỉ khả dụng trong các thiết bị đầu cuối bạn mở. Ví dụ: nếu bạn nhấn Alt + F2 và cố gắng chạy một lệnh từ thư mục đó, nó sẽ không tìm thấy nó. Nếu bạn đặt nó trong ~/.profilehoặc ~/.pam_environment, phiên gnome (hoặc bất kỳ DE nào bạn sử dụng) sẽ kế thừa nó. Việc thêm PATH vào ~/.bashrccũng có một nhược điểm là nếu bạn mở / thực hiện bash tương tác từ một vỏ bash tương tác khác, nó sẽ được nối thêm nhiều lần.
geirha

2
Tôi đã không thực sự xem xét điều này trong một thời gian, vì vậy tôi đã thực hiện một tìm kiếm và dường như có ít nhất 95 cách khác nhau để đặt đường dẫn, hầu hết trong số đó được thảo luận ở đây . Tôi không bao giờ tìm ra cái nào là tốt nhất. Tôi nghĩ ~/.profilelà chính xác cho con đường cá nhân, mặc dù; đó là nơi Ubuntu thêm ~/binthư mục. Và tôi thú nhận rằng tôi đã phóng đại một chút về số cách - chỉ một chút thôi.
Marty Fried

1
@MartyFried, vâng, để trích dẫn bot trong #bash trên freenode: «Phần lớn các tập lệnh bash, mã, hướng dẫn và hướng dẫn trên Internet là tào lao. Sturgeon là một người lạc quan. »Sử dụng google cho vấn đề bash, bạn sẽ thường tìm thấy rất nhiều giải pháp hoạt động nửa vời trước khi bạn tìm thấy một giải pháp tốt. Oh và tôi cũng đi cùng ~/.profiletrong trường hợp này.
geirha

1
@geirha - Tôi đồng ý rằng hầu hết các hướng dẫn trên internet nói chung có lẽ là tào lao, đặc biệt là mọi thứ linux vì các bản phát hành khác nhau, hoặc thậm chí các phiên bản khác nhau của cùng một bản, làm những việc khác nhau. Nó thường tập trung vào những gì hoạt động, nhưng hầu hết mọi người không nhận ra rằng những gì hoạt động chỉ đơn giản là những gì hoạt động, không nhất thiết là những gì đúng hoặc thậm chí những gì sẽ luôn hoạt động. Tôi cố gắng tìm ra cách nào trong số nhiều cách thực sự chính xác, bởi vì tôi ghét làm nhiều việc hơn một lần - nhưng không phải lúc nào cũng dễ dàng. :)
Marty Fried

15

Để thiết lập hệ thống rộng, nối thêm dòng export PATH=/path/you're/adding:$PATHvào cuối /etc/profile.

Để thêm thư mục chỉ dành cho người dùng đã đăng nhập, hãy nối cùng dòng vào ~/.bash_profile.


14

Thêm nó vào .bashrc sẽ hoạt động nhưng tôi nghĩ cách thiết lập các biến đường dẫn truyền thống hơn của bạn là trong .bash_profile bằng cách thêm các dòng sau.

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

Theo chủ đề này, có vẻ như hành vi của Ubuntu hơi khác so với RedHat và nhân bản.


1
Tôi không có .bash_profile, tôi có nên tạo nó không?
justingrif

7
Nếu bạn có .bashrc, hãy gắn nó vào .bashrcthay thế. Thiết bị đầu cuối GUI trong Ubuntu không phải là vỏ đăng nhập, vì vậy .bash_profilesẽ không được chạy.

1
Tôi không chạy vỏ gui. Nhưng từ luồng trên, có vẻ như .bashrc sẽ hoạt động tốt.
justingrif

2
Cả hai sẽ hoạt động nếu shell của bạn là shell đăng nhập. Nhưng tôi chỉ thử cách tiếp cận .bash_profile trên một trong các máy Ubuntu của tôi và ngay cả sau khi khởi động lại phiên gnome của tôi, nó vẫn không tạo nguồn .bash_profile của tôi. Vì vậy, tôi sẽ nói rằng việc đưa cái này vào .bashrc có lẽ là cách phù hợp với Ubuntu.
3dinfluence

3
@justingrif Không, bạn không cần .bash_profile. Nếu bash không tìm thấy .bash_profile(khi bạn đăng nhập tương tác), nó sẽ tìm .profilevà sử dụng nó thay thế. Theo mặc định, bạn sẽ có một .profile.bashrctrong Ubuntu. Và .profilelà nơi chính xác để đặt các biến môi trường nếu chúng ta bỏ qua pam_env.
geirha

10

Trong thiết bị đầu cuối, cdđểthe_directory_you_want_to_add_in_the_path

echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc

Đây không phải là ý tưởng của tôi. Tôi tìm thấy cách này để xuất đường dẫn tại blog này ở đây .


8
sudo vi /etc/profile.d/SCRIPT_NAME.sh

thêm vào đó

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH

2
sudo nano /etc/profile.d/SCRIPT_NAME.shlà dễ dàng hơn cho người mới bắt đầu.
đẳng cấu

1
Đối với người mới bắt đầu, gksu gedit /etc/profile.d/SCRIPT_NAME.shthậm chí còn dễ dàng hơn.
bốn

6

Bất cứ khi nào tôi "cài đặt" thư mục tập lệnh BASH của mình, tôi sẽ làm theo mẫu thử nghiệm cho một $HOME/binthư mục có trong hầu hết các tệp .profile trong các phiên bản gần đây của Ubuntu. Tôi đặt một bài kiểm tra giống như

if [ -d "/usr/scripts" ]; then
   PATH="/usr/scripts:$PATH"
fi

Nó hoạt động chỉ khoảng 100% thời gian và để tôi tự do thay đổi nó trong trình soạn thảo văn bản GUI bằng một "Thay thế tất cả" nhanh chóng nếu tôi quyết định chuyển đến /scriptsmột nơi nào đó gần hơn với $HOMEthư mục của mình . Tôi đã không làm như vậy trong 6 lần cài đặt Ubuntu, nhưng "luôn luôn là ngày mai". S

BZT


6

Cách chỉnh sửa được đề xuất PATHlà từ /etc/environmenttệp

Ví dụ đầu ra của /etc/environment:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Ví dụ: để thêm đường dẫn mới của /home/username/mydir

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"

Sau đó, khởi động lại PC của bạn.


Biến môi trường toàn hệ thống

Một tệp phù hợp cho các cài đặt biến môi trường có ảnh hưởng đến toàn bộ hệ thống (chứ không chỉ là một người dùng cụ thể) là / etc / môi trường. Một cách khác là tạo một tệp cho mục đích trong thư mục /etc/profile.d.

/ etc / môi trường

Tập tin này đặc biệt dành cho các cài đặt biến môi trường toàn hệ thống. Nó không phải là một tập lệnh, mà là bao gồm các biểu thức gán, mỗi biểu thức.

Lưu ý: Mở rộng biến không hoạt động trong / etc / môi trường.

Thông tin thêm có thể được tìm thấy ở đây: Biến môi trường


1
Câu trả lời thấp nhất nhưng đúng nhất. Tệp này thường là tự động điền vào Ubuntu với đường dẫn.
Nổi tiếngPyro

4

Mở thiết bị đầu cuối của bạn, nhập gedit .profilevà chèn như sau:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$PATH:$HOME/bin"
fi

 #the following line add Bin where you dont have a Bin folder on your $HOME
    PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"

Đóng và mở terminal, nó sẽ hoạt động.


2

Đặt nó vào ~/.bashrchoặc bất cứ thứ gì bạn sử dụng RC (hoặc được nói trước ~/.profile) VÀ ~/.xsessionrcvì vậy nó cũng sẽ hoạt động trong X (vỏ ngoài).


1

Ngay cả khi các tập lệnh hệ thống không sử dụng điều này, trong bất kỳ trường hợp nào mà người ta muốn thêm một đường dẫn (ví dụ $HOME/bin:) vào biến môi trường PATH, người ta nên sử dụng

PATH="${PATH:+${PATH}:}$HOME/bin"

để nối thêm (thay vì PATH="$PATH:$HOME/bin") và

PATH="$HOME/bin${PATH:+:${PATH}}"

để chuẩn bị (thay vì PATH="$HOME/bin:$PATH").

Điều này tránh được dấu hai chấm giả / dấu đầu dòng khi $PATHban đầu trống, có thể có tác dụng không mong muốn.

Xem ví dụ: https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-lead-colon-if-unset


-1

Đối với Ubuntu chỉnh sửa ~/.bashrcvà thêm dòng sau.

. ~/.bash_profile

Sau đó chỉnh sửa .bash_profile của bạn khi bạn cần .....


1
Bị từ chối vì bạn không giải thích cách "chỉnh sửa .bash_profilekhi bạn cần". Chính xác thì tôi cần phải làm .bash_profilegì?
đẳng cấu

4
Đây là cách sai. .profilehoặc .bash_profilenên nguồn .bashrc. Không phải hướng ngược lại.
geirha
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.