Bagaimana cara memodifikasi PATH saya sehingga perubahan tersedia di setiap sesi Terminal

53

Saya ingin menambahkan direktori untuk mencari jalur pencarian saya. Saya tahu saya harus memodifikasi PATHvariabel lingkungan. Namun, saya ingin perubahannya permanen, sehingga selalu berlaku, untuk setiap jendela Terminal (bash) yang saya buka.

Ada kelebihan informasi yang membingungkan dan kemungkinan saling bertentangan di https://help.ubuntu.com/community/EnvironmentVariables

Saya menggunakan Ubuntu 10,04. Misalkan saya ingin menambahkan /usr/local/fooke PATH. File yang ( .bashrc, .profile, .bash_login, dll ...) yang harus saya memodifikasi dan apa yang harus baris baru (s) terlihat seperti?

Joshua Flanagan
sumber

Jawaban:

70

Perintah berikut menambahkan jalur ke jalur Anda saat ini:

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

Jika Anda ingin pengaturan Anda menjalankan perintah ini setiap kali, ada sejumlah tempat di mana Anda dapat meletakkannya. Saat Anda masuk, skrip berikut akan dieksekusi dalam urutan ini:

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

Catatan

  • ~/.profile hanya dimuat jika ~/.bash_profiledan ~/.bash_loginJANGAN ADA. Kalau tidak, setidaknya bash, akan memuatnya. Dianjurkan untuk menggunakan .profiledan bukan bash skrip khusus. Jadi, jika dalam upaya yang Anda buat ini .bash_login, harap hapus sekarang.

  • ~/.bashrchanya dimuat jika Anda menjalankan sesi interaktif. (sesuatu dengan prompt di mana Anda bisa mengetik sesuatu).

  • ~/.bashrcdimuat berulang kali, setiap kali Anda membuka terminal baru . Jadi tab baru di gnome-terminal, terminal virtual baru, dll. Jadi, bahkan jika Anda tidak masuk lagi, .bashrcdimuat (dan dengan demikian me-reset lingkungannya) setiap kali Anda membuka shell baru.

  • Hal-hal seperti byobu harus benar-benar masuk .profile, (jika tidak, itu tidak akan berhasil ;-)

  • Hal-hal seperti jalur harus digunakan .profilejika Anda ingin mereka bekerja di luar sesi interaktif. (katakan ketika Anda menekan Alt+ F2di GNOME)

Ralf
sumber
Saya akan menandai ini sebagai jawaban jika Anda memperbaruinya untuk menyertakan jalur ekspor yang diminta yang harus ditambahkan ke .profile.
Joshua Flanagan
Ini dulunya hanya valid untuk login konsol (misalnya ssh, atau terminal virtual yang dapat diakses untuk Ctrl + Alt + Fx). Saya tidak tahu bahwa / etc / gdm / sumber Xsession ~ /. Profil hari ini. Rapi!
Marius Gedminas
Ya, saya tidak menyebutkan / etc / gdm / Xsession secara khusus atau ~ /. Profil karena ada cara yang lebih baik untuk membuat program grafis diluncurkan saat start up, yang menjamin bahwa seluruh lingkungan sudah dimuat.
Ralf
1
untuk membuat jawaban ini lebih komprehensif silakan tambahkan komentar MattH tentang sumber ~ /. profil untuk mengaktifkan perubahan tanpa siklus logoff / on.
matt wilkie
1
@ schwiz: ~/.profiletidak dieksekusi pada setiap terminal, ini dieksekusi sebelumnya, ketika sesi desktop Anda dimulai. Yang dieksekusi di setiap terminal adalah~/.bashrc
MestreLion
13

Saya berhasil dengan memodifikasi ~/.profile

Sepertinya menambahkan ~ / bin ke path saya adalah contoh yang buruk, karena sudah ada kode di ~ / .profile untuk melakukan itu secara otomatis, jika direktori ada.

Untuk menambahkan direktori usr / local / foo ke jalur saya untuk setiap sesi selanjutnya, saya menambahkan / mengedit baris berikut di akhir .profile saya:

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

Namun, untuk membuat ini berlaku, saya harus keluar dan masuk kembali (cukup menutup jendela Terminal dan membuka yang baru TIDAK berfungsi).

Joshua Flanagan
sumber
4
Jadikan itu export PATH="$PATH:/usr/foo", jika Anda memiliki spasi atau karakter khusus lain di dalamnya $PATH.
Gilles 'SO- stop being evil'
3
Anda dapat memuat ulang lingkungan saat ini tanpa keluar dengan mengetikkan ". ~ / .Profile"
Matt H
1
@ Matt: tidak, kamu tidak bisa. jika Anda sumber ~/.profiledi terminal tertentu, itu akan efektif untuk itu terminal hanya
MestreLion
@MestreLion - Anda benar. Saya menyebutkannya untuk kenyamanan terminal saat ini. Lupa menambahkan itu.
Matt H
Bagaimana jika saya sudah memiliki sesuatu di PATH? Bisakah saya menambahkannya seperti PATHS berfungsi di Windows? Misalnya saya PATH="$HOME/bin:$HOME/.local/bin:$PATH"sudah.
Gabriel Fair
4

Untuk memuat ulang. Profil dan mengambil efek perubahan tanpa keluar / masuk, jalankan:

source ~/.profile
Bruno Freitas
sumber
yang ini harusnya komentar untuk jawaban sebelumnya
Pavlo Zhukov
3

Anda dapat menambahkan path ke /etc/environment, tetapi perlu diketahui bahwa tidak ada ekspansi shell akan bekerja; variabel akan diatur ke karakter yang Anda masukkan.

sagarchalise
sumber
Dari dua metode (menambahkan perintah ekspor di. Profil dan menambahkan nama path lengkap ke PATH di etc / environment), yang mana yang lebih disukai?
Rohan Bhatia
2

Anda dapat memodifikasi .bashrcfile di $HOMEdirektori Anda .

Di akhir file ini, tambahkan baris:

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

Anda juga dapat memodifikasi .profilefile, juga di $HOMEdirektori Anda , termasuk baris berikut:

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

Ini berhasil untuk saya.

Denner Vieira
sumber
2
Saya tidak melihat apa ini menambah jawaban lain yang menjelaskan lebih menyeluruh.
Zanna
Ini jawaban yang benar jika Anda ingin perubahan memengaruhi terminal windows. Mengubah .profiletidak berpengaruh pada jendela terminal.
Markus Laire
0

Jika Anda memiliki ohmyzsh, goto direktori home Anda melalui terminal dan ketik

nano .zshrc

Di akhir file masukkan

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

Terakhir restart terminal Anda. Bekerja untukku. Semoga ini bermanfaat.

Vallie
sumber
-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
Mac
sumber
Ini tidak benar dan tidak akan berfungsi. Ekspansi parameter tidak dilakukan dalam/etc/environment
Zanna