Bagaimana saya bisa menambahkan jalur ke variabel lingkungan PATH?

11

Saya ingin menambahkan jalur ke PATHvariabel lingkungan?

Saya sudah mencoba export PATH=/mypath:$PATHdan berhasil. Tetapi saat berikutnya saya memulai Terminal, jalur baru saya tidak lagi menjadi PATHvariabel lingkungan.

Bagaimana saya bisa menambahkan jalur ke PATHvariabel lingkungan? dan itu harus ada di sana juga saat saya memulai Terminal berikutnya.


Saya memiliki masalah dengan ini sekarang lagi, trik yang berhasil sebelumnya sepertinya tidak berfungsi lagi.

Saya sudah mencoba:

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

untuk menambahkan dua variabel lingkungan. Kemudian ~/.profile-file saya memiliki konten ini:

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

Tetapi ketika saya memulai jendela Terminal baru dan mengetik gradle(perintah yang saya tambahkan PATH), saya mendapatkan pesan bahwa perintah itu tidak ada. Jika saya menjalankan perintah /Users/jonas/gradle-1.2/binitu berfungsi dengan baik!

Jonas
sumber
Jika Anda mengacaukan sesuatu, lihat juga: Reset variabel PATH Anda
Jari Keinänen
1
Penugasan ke PATH (ekspor kedua) harus dengan $ GRADLE_HOME
nohillside

Jawaban:

5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile harus melakukan trik!

Jika Anda menggunakan echo 'export PATH=/my/path:$PATH' > ~/.bash_profile, atau variasi semacam itu, Anda akan menimpa konten profil Anda!

Yasyf
sumber
9

OSX membaca file-file berikut secara berurutan ketika terminal terbuka:

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

Jadi tempatkan penambahan jalur Anda ke salah satu dari ini. Saya biasanya menambahkan~/.bash_profile

robzolkos
sumber
2
Terima kasih, saya menggunakanecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
3

Selain tempat-tempat yang disebutkan oleh @RobZolkos, shell login juga mencari /etc/pathsdan file-file di dalamnya /etc/paths.d/. Satu entri jalur per baris dalam file-file ini.

Lihat /etc/profiledan halaman manual untuk path_helper.

Harald Hanche-Olsen
sumber
Ok terima kasih! tetapi masalah terbesar adalah bagaimana cara menambahkan path. Tetapi saya menemukanecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
@Jonas: Saya menyadari bahwa masalah Anda telah terpecahkan. Jawaban saya dimaksudkan untuk kepentingan pembaca di masa mendatang, sehingga mereka dapat melihat semua opsi yang tersedia bagi mereka.
Harald Hanche-Olsen
2

Tapi pertanyaan lama, untuk pengguna MacOS X Catalina:

Buat / edit ~/.zshenv:

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

Perhatikan bahwa memodifikasi PATHdalam ~/.zprofileatau ~/.zshrctidak benar, itu harus ~/.zshenv.

Jika Anda perlu menambahkan sesuatu PATH, buat / edit lebih lanjut ~/.zprofile:

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

Referensi: http://zsh.sourceforge.net/Intro/intro_3.html

Hujan
sumber
Apa yang Anda maksud dengan "Jika Anda perlu menambahkan ke PATH" dan mengapa ini tidak bisa dilakukan .zshenvjuga?
nohillside
@nohillside: Maaf untuk tata bahasa saya yang buruk, tapi pertanyaan yang bagus. Jika Anda mencoba untuk menambahkan sesuatu ke PATHdalam ~/.zshenvoleh PATH="to/your/path:$PATH", tanpa garis dalam ~/.zprofile, itu tidak akan berfungsi. Panggilan sesuatu path_helperakan memindahkan mereka /usr/local/bin/:/usr/bin:...ke depan PATH.
Hujan
Singkatnya itu masalah pemuatan pesanan. path_helperakan dieksekusi setelah ~/.zshenvtetapi sebelumnya ~/.zproflie. Dan dari penelitian saya hari ini saya akan merekomendasikan menggunakan symlink daripada memodifikasi PATH, yang jauh lebih sederhana.
Hujan
0

Masukkan .bashrc baris kode ini:

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
}

kemudian ketik perintah seperti: pathadd /opt/local/binatau pathadd /opt/local/bin after.

Maurizio Loreti
sumber
Perhatikan dua fungsi di init- github.com/fink/base-files/blob/master/init.sh.in
fd0