Bagaimana cara menambahkan direktori ke PATH?

730

Bagaimana cara menambahkan direktori ke $PATHdalam Ubuntu dan membuat perubahan itu permanen?

justingrif
sumber
2
help.ubuntu.com/community/EnvironmentVariables Ada semua yang perlu Anda ketahui. Saya menemukan bahwa banyak input di sini salah atau setidaknya metode ini tidak disarankan. Ini adalah informasi hebat yang akan memungkinkan Anda mencari tahu di mana harus memodifikasi variabel lingkungan Anda berdasarkan alasan Anda melakukannya dan bagaimana melakukannya tanpa mengacaukan semuanya (seperti yang saya lakukan setelah mengikuti beberapa saran buruk yang disebutkan di atas). Begitu lama, dan terima kasih untuk semua ikannya!
Bus42

Jawaban:

455

Menggunakan ~ / .profile untuk menetapkan $ PATH

Jalur yang disetel .bash_profilehanya akan ditetapkan dalam shell login bash ( bash -l). Jika Anda meletakkan path Anda di .profiledalamnya, akan tersedia untuk sesi desktop lengkap Anda. Itu berarti bahkan keberanian akan menggunakannya.

Sebagai contoh ~/.profile:

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

Btw, Anda dapat memeriksa variabel PATH dari suatu proses dengan melihat lingkungannya di /proc/[pid]/environ(ganti [pid] dengan nomor dari ps axf). Misal pakaigrep -z "^PATH" /proc/[pid]/environ

catatan:

bashsebagai shell login tidak diuraikan .profilejika ada .bash_profileatau .bash_loginada. Dari man bash:

ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan itu, dan membaca serta mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca.

Lihat jawaban di bawah ini untuk informasi tentang .pam_environment, atau .bashrcuntuk shell non-login interaktif, atau tetapkan nilai secara global untuk semua pengguna dengan memasukkan skrip ke dalam /etc/profile.d/atau gunakan /etc/X11/Xsession.d/untuk memengaruhi sesi manajer tampilan.

ko-dos
sumber
5
Keren, itu berhasil. Saya melihat di mana ia akan secara otomatis menambahkan bin bin jika saya membuatnya jadi saya hanya menggunakan itu daripada skrip. TY.
justingrif
5
Di Xbunutu .profile tidak dieksekusi jadi saya letakkan di .bashrc dan berhasil.
tekumara
13
Bagian dokumentasi ini dilakukan dengan sangat baik: Dokumentasi resmi tentang variabel lingkungan . Pertimbangkan untuk membacanya (bukan untuk mengatakan bahwa ini diperbarui ke versi terakhir dari aturan untuk menambahkan nilai ke variabel lingkungan).
Michele
3
Di mana di .profile kita menambahkan path ??
Vineet Kaushik
3
Saya masih tidak tahu di mana menambahkan bagian jalur ekstra saya. Saya perlu menambahkan SDK android ke jalur saya ... PATH="$HOME/bin:$PATH"Jadi saya menambahkannya?
Jamie Hutber
303

Edit .bashrcdi direktori home Anda dan tambahkan baris berikut:

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

Anda harus mengambil .bashrcatau logout / login (atau me-restart terminal) Anda agar perubahan diterapkan. Untuk sumber Anda .bashrc, cukup ketik

$ source ~/.bashrc
Ophidian
sumber
3
Bagaimana Anda "sumber Anda .bashrc"? Bagaimana Anda "me-restart terminal"?
isomorfisma
3
Dalam bash itu hanya '. .bashrc '
Ophidian
1
Saya membuat asumsi bahwa Anda berada di direktori home Anda. karena di situlah .bashrc yang ingin Anda edit adalah.
Ophidian
21
.bashrcbukan tempat yang tepat untuk mengatur variabel lingkungan. Mereka harus masuk .profileatau .pam_environment. Lihat mywiki.wooledge.org/DotFiles
geirha
4
@ LaoTzu . .bashrctidak .bashrc:) atau source .bashrcdalam hal ini
Znarkus
120

Tempat yang disarankan untuk mendefinisikan variabel lingkungan permanen, sistem-lebar yang berlaku untuk semua pengguna adalah di:

/etc/environment

(Di situlah default PATHdidefinisikan)

Ini akan bekerja di desktop atau konsol, gnome-terminal atau TTY, hujan atau cerah;)

  • Untuk mengedit, tekan Alt+ F2dan ketik:

    gksudo gedit /etc/environment
    

    (atau buka file menggunakan sudoeditor teks favorit Anda)

Untuk melakukan perubahan, jalankan . /etc/environment. Karena file ini hanya sebuah skrip sederhana, ia akan berjalan dan menetapkan path baru ke PATHvariabel lingkungan. Untuk memeriksa jalankan env dan lihat PATHnilai dalam daftar.

Terkait:

ish
sumber
6
dan kemudian Anda perlu mem-boot ulang agar perubahan diterapkan ...
Lee
2
Inilah yang saya butuhkan. Menyediakan gambar vm yang dibuang melalui gelandangan dan perlu menambahkan node dan npm ke path.
Austin Pray
7
Untuk melakukan perubahan dalam menjalankan efek. / etc / environment (yes, dot, spasi dan / etc / environment). Karena file ini hanya skrip sederhana, ia akan berjalan dan menetapkan jalur baru ke variabel lingkungan PATH. Untuk memeriksa jalankan env dan lihat nilai PATH dalam daftar.
WindRider
1
Saya perlu menjalankan source /etc/environmentuntuk memuat ulang perubahan
JohnnyAW
@JohnnyAW: sumber setara dengan titik awal, lihat misalnya en.wikipedia.org/wiki/Source_(command) .
Roland Sarrazin
58

Saya pikir cara kanonik di Ubuntu adalah:

  • buat file baru di bawah /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • tambahkan di sana:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • dan berikan izin eksekusi

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    
woto
sumber
20
Biasanya lebih aman untuk menambahkan jalur khusus Anda ke akhir PATH daripada awal. Ini menghindari secara tidak sengaja mengganti perintah sistem dengan program Anda (atau program jahat orang lain). Ini juga menghindari banyak kebingungan ketika orang lain bekerja pada sistem Anda (atau memberi Anda saran) dan mereka mendapatkan hasil yang tidak terduga dari perintah yang telah Anda "ganti".
Joe
47

Untuk pemula baru (seperti saya) yang lebih nyaman dengan GUI:

  1. Buka $HOMEfolder Anda .
  2. Pergi ke LihatTampilkan File Tersembunyi atau tekan Ctrl+ H.
  3. Klik kanan .profiledan klik Open With Text Editor .
  4. Gulir ke bawah dan tambahkan PATH="$PATH:/my/path/foo".
  5. Menyimpan.
  6. Logout dan login kembali untuk menerapkan perubahan (biarkan Ubuntu memuatnya .profile).
lelah
sumber
4
Mengedit file .profile tidak direkomendasikan lagi. Anda masih dapat menggunakan metode ini untuk mengedit file .pam_environment lihat: help.ubuntu.com/community/EnvironmentVariables
PulsarBlow
Terima kasih @PulsarBlow! Saya tidak begitu yakin apa sebenarnya perbedaan dan manfaatnya ... Ini adalah URL langsung ke bagian yang relevan: help.ubuntu.com/community/…
dain
1
Jawaban ini menyebabkan sistem saya berhenti masuk karena semua jalur ditimpa. Menggunakan Ubuntu 16.04.
Frisbetarian
1
@ Frisbetarian Anda harus memastikan untuk menambahkan $PATH:bit yang termasuk definisi PATH yang ada
dain
@dain: komentar Anda menyelamatkan hidup saya!
Py-ser
46

Untuk variabel lingkungan persisten hanya tersedia untuk pengguna tertentu. Saya sangat merekomendasikan dokumentasi resmi Ubuntu.

https://help.ubuntu.com/community/EnvironmentVariables

Mengacu pada dokumentasi di atas, saya telah menyiapkan perangkat jalur SDK Android saya dengan:

  1. membuat ~/.pam_environmentfile di direktori home.
  2. konten yang ada PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. jalur pengguna kustom tambahan dapat ditambahkan dengan memisahkan jalur dengan titik dua (:) .
  4. ini membutuhkan login ulang , yang berarti Anda harus keluar dan masuk kembali ke lingkungan desktop.
Eduardo B.
sumber
1
Ini jawaban terbaik.
Paulo Coghi
26

Masukkan baris itu di ~/.bashrcfile Anda .

Itu bersumber setiap kali Anda membuka terminal

EDIT : Berdasarkan komentar di bawah ini, untuk pengaturan yang lebih umum yang akan berlaku untuk semua shell (termasuk ketika Anda menekan Alt- F2di Unity), tambahkan baris ke ~/.profilefile Anda . Mungkin sebaiknya tidak melakukan keduanya, karena jalur akan ditambahkan dua kali ke PATHlingkungan Anda jika Anda membuka terminal.

Ian B.
sumber
1
Sebenarnya, saya pikir Anda menetapkan jalur baik $HOME/.profileuntuk pengaturan pribadi, atau /etc/profileuntuk semua pengguna. Tetapi jika itu hanya diperlukan untuk bash, saya kira keduanya akan bekerja.
Marty Fried
1
Jika Anda mengaturnya ~/.bashrc, itu hanya akan tersedia di terminal yang Anda buka. Misalnya jika Anda menekan Alt + F2 dan mencoba menjalankan perintah dari dir itu, ia tidak akan menemukannya. Jika Anda mengaturnya di ~/.profileatau ~/.pam_environment, sesi gnome (atau DE mana pun yang Anda gunakan) akan mewarisinya. Menambahkan PATH di ~/.bashrcjuga memiliki kelemahan bahwa jika Anda membuka / exec bash secara interaktif dari shell bash interaktif lain, itu akan ditambahkan beberapa kali.
geirha
2
Saya belum benar-benar melihat ke dalam ini untuk sementara waktu, jadi saya melakukan pencarian, dan tampaknya ada setidaknya 95 cara berbeda untuk mengatur jalur, sebagian besar dibahas di sini . Saya tidak pernah menemukan yang mana yang terbaik. Saya pikir ~/.profileitu benar untuk jalur pribadi; di situlah Ubuntu menambahkan ~/bindirektori. Dan saya akui saya sedikit melebih-lebihkan dalam beberapa hal - hanya sedikit.
Marty Fried
1
@MartyFried, ya, mengutip bot di #bash di freenode: «Mayoritas skrip bash, kode, tutorial, dan panduan di Internet adalah omong kosong. Sturgeon adalah seorang yang optimis. »Menggunakan google untuk masalah bash, Anda akan sering menemukan banyak solusi setengah bekerja sebelum Anda menemukan yang bagus. Oh dan aku akan ikut ~/.profiledalam kasus ini juga.
geirha
1
@geirha - Saya setuju bahwa sebagian besar panduan di internet pada umumnya mungkin omong kosong, terutama apa pun linux karena distro yang berbeda, atau bahkan versi yang berbeda dari yang sama, melakukan hal-hal berbeda. Biasanya bermuara pada apa yang berhasil, tetapi kebanyakan orang tidak menyadari bahwa apa yang berhasil adalah yang berhasil, belum tentu apa yang benar atau bahkan apa yang akan selalu berhasil. Saya mencoba mencari tahu mana dari banyak cara yang benar, karena saya benci melakukan sesuatu lebih dari sekali - tetapi itu tidak selalu mudah. :)
Marty Fried
15

Untuk mengaturnya menjadi sistem lebar, tambahkan baris export PATH=/path/you're/adding:$PATHke akhir /etc/profile.

Untuk menambahkan direktori hanya untuk pengguna yang masuk, tambahkan baris yang sama ke ~/.bash_profile.

ennuikiller
sumber
14

Menambahkannya ke .bashrc akan berfungsi tetapi saya pikir cara yang lebih tradisional untuk mengatur variabel path Anda ada di .bash_profile dengan menambahkan baris berikut.

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

Menurut utas ini, tampaknya perilaku Ubuntu sedikit berbeda dari RedHat dan klon.

Pengaruh 3d
sumber
1
Saya tidak punya .bash_profile, Haruskah saya membuatnya?
justingrif
7
Jika sudah .bashrc, tempelkan .bashrcsaja. Terminal GUI di Ubuntu bukan shell login, jadi .bash_profiletidak akan dijalankan.
1
Saya tidak menjalankan shell gui. Tetapi dari utas di atas sepertinya .bashrc akan berfungsi dengan baik.
justingrif
2
Keduanya akan berfungsi jika shell Anda adalah shell login. Tapi saya baru saja mencoba pendekatan .bash_profile di salah satu mesin Ubuntu saya dan bahkan setelah memulai kembali sesi gnome saya, itu tidak sumber .bash_profile saya. Jadi saya akan mengatakan bahwa meletakkan ini di .ashrc mungkin cara untuk pergi dengan Ubuntu.
3dinfluence
3
@justingrif Tidak, Anda tidak perlu .bash_profile. Jika bash tidak menemukan .bash_profile(ketika Anda masuk secara interaktif), itu akan mencari .profiledan menggunakannya. Secara default, Anda akan memiliki .profiledan .bashrcdi Ubuntu. Dan .profileadalah tempat yang tepat untuk mengatur variabel lingkungan jika kita mengabaikan pam_env.
geirha
10

Di terminal, cdkethe_directory_you_want_to_add_in_the_path

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

Ini bukan ideku. Saya menemukan cara ini untuk mengekspor jalur di blog ini di sini .

Vittorio Cecchetto
sumber
8
sudo vi /etc/profile.d/SCRIPT_NAME.sh

tambahkan di sana

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
Jorge Castro
sumber
2
sudo nano /etc/profile.d/SCRIPT_NAME.shlebih mudah untuk pemula.
isomorfisma
1
Untuk pemula, gksu gedit /etc/profile.d/SCRIPT_NAME.shbahkan lebih mudah.
Fouric
6

Setiap kali saya "menginstal" folder skrip BASH saya, saya mengikuti pola tes untuk $HOME/binfolder yang ada di sebagian besar file profil. Dalam versi terbaru dari Ubuntu. Saya menetapkan tes yang terlihat seperti

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

Ini berfungsi hampir 100% dari waktu, dan membuat saya bebas untuk mengubahnya dalam editor teks GUI dengan "Ganti semua" cepat jika saya pernah memutuskan untuk pindah ke /scriptssuatu tempat lebih dekat ke $HOMEfolder saya . Saya belum melakukannya di 6 instalasi Ubuntu, tetapi "selalu ada besok." S

BZT

Silversleevesx
sumber
6

Cara yang disarankan untuk mengedit Anda PATHadalah dari /etc/environmentfile

Contoh output dari /etc/environment:

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

Misalnya, untuk menambahkan jalur baru /home/username/mydir

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

Kemudian, reboot PC Anda.


Variabel lingkungan sistem-lebar

File yang sesuai untuk pengaturan variabel lingkungan yang memengaruhi sistem secara keseluruhan (bukan hanya pengguna tertentu) adalah / etc / environment. Alternatifnya adalah membuat file untuk tujuan di direktori /etc/profile.d.

/ etc / environment

File ini secara khusus dimaksudkan untuk pengaturan variabel lingkungan sistem-lebar. Ini bukan file skrip, melainkan terdiri dari ekspresi penugasan, satu per baris.

Catatan: Perluasan variabel tidak berfungsi di / etc / environment.

Info lebih lanjut dapat ditemukan di sini: EnvironmentVariables

Benny
sumber
1
Jawaban terendah namun paling benar. File ini biasanya diisi secara otomatis bin Ubuntu dengan path.
NotoriousPyro
4

Buka terminal Anda, ketik gedit .profiledan masukkan yang berikut ini:

# 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"

Tutup dan buka terminal, itu seharusnya berfungsi.

djavier
sumber
2

Letakkan di ~/.bashrcatau di mana Anda menggunakan rc (atau sebelumnya ~/.profile) DAN ~/.xsessionrcdemikian juga akan bekerja di X (shell luar).

Mikaela
sumber
1

Bahkan jika skrip sistem tidak menggunakan ini, dalam setiap kasus yang orang ingin menambahkan path (misalnya, $HOME/bin) ke variabel lingkungan PATH, kita harus menggunakan

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

untuk menambahkan (bukan PATH="$PATH:$HOME/bin"), dan

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

untuk prepending (bukan PATH="$HOME/bin:$PATH").

Ini untuk menghindari kolon leading / trailing palsu ketika $PATHawalnya kosong, yang dapat memiliki efek yang tidak diinginkan.

Lihat misalnya https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unset

sancho.s
sumber
-1

Untuk Ubuntu, edit ~/.bashrcdan tambahkan baris berikut.

. ~/.bash_profile

Kemudian edit .bash_profile Anda sesuai kebutuhan .....

Jorge Castro
sumber
1
Turun karena Anda tidak menjelaskan cara "mengedit .bash_profileseperlunya". Apa sebenarnya yang harus saya lakukan untuk .bash_profile?
isomorfisma
4
Ini cara yang salah. .profileatau .bash_profileharus sumber .bashrc. Bukan sebaliknya.
geirha