Bagaimana cara menggunakan /etc/paths.d untuk menambahkan file yang dapat dieksekusi ke jalur saya?

15

Saya mencoba menggunakan /etc/paths.d untuk menambahkan executable ke variabel path saya, tetapi sejauh ini saya belum berhasil.

Path lengkap file yang dapat dieksekusi adalah: /opt/ImageMagick/bin/convert

/etc/paths.d berisi dua file: 40-XQuartz dan ImageMagick

40-XQuartz berisi satu baris: /opt/X11/bin
ImageMagick berisi satu baris:/opt/ImageMagick/bin

Saya echo $PATHmemberi:

/Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Jadi sepertinya hanya file pertama (40-XQuartz) yang melakukan tugasnya. Izin kedua file (40-XQuartz dan ImageMagick) persis sama, jadi pertanyaan saya adalah mengapa yang pertama berfungsi dan yang kedua tidak.

Saya menjalankan OS X Mavericks.

alat ski
sumber
Shell apa yang Anda gunakan? Bagaimana dengan / etc / paths?
Max Ried
Menambahkan kaku untuk /etc/paths.dbekerja untuk saya, tapi saya me-restart aplikasi terminal apa pun yang saya gunakan (ITerm2 dalam kasus saya) agar jalan baru mulai berlaku
user1256923

Jawaban:

17

Sudahkah Anda memulai shell login baru sejak menambahkan file baru untuk ImageMagick? Pengaturan jalur dari paths.dentri dilakukan di /etc/profiledan /etc/csh.login, jadi Anda perlu memulai shell baru agar entri baru berlaku.

OS X menggunakan path_helperuntuk mengatur path berdasarkan file di /etc/paths.d- Anda selalu dapat menyebutnya secara manual (dengan asumsi shell seperti Bourne di sini):

$ eval `/usr/libexec/path_helper -s`
mjturner
sumber
Tentu saja saya sudah memulai shell baru. Saya bahkan me-restart mac saya.
skiabox
shell login baru berfungsi untuk saya
incandescentman
3

Lari

echo /opt/ImageMagick/bin|sudo tee /etc/paths.d/ImageMagick;bash -l;echo $PATH

menambahkan /opt/ImageMagick/binuntuk PATHdi instalasi saya.

Apakah Anda mengesampingkan PATHdi tempat lain seperti ~/.bash_profile?

Jalan di /etc/paths.d/ditambahkan ke jalan oleh /usr/libexec/path_helper, yang dijalankan dari /etc/profile, /etc/zsh.env, dan /etc/csh.login. path_helpertidak dijalankan oleh aplikasi grafis atau ketika bash dipanggil sebagai shell non-login.

Anda juga dapat mengatur default PATHdi /etc/launchd.conf:

  1. Jalankan misalnya setenv PATH /Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/ImageMagick/bin|sudo tee -a /etc/launchd.conf.
  2. Mulai ulang, atau jalankan launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confdan jalankan kembali proses.

Saya lebih suka mengubah jalur /etc/launchd.conf, karena juga mempengaruhi program yang tidak dimulai dari shell, seperti editor teks dan program yang dimulai oleh launchd jobs.

Lri
sumber
0

Luar biasa, saya hanya bermain-main dengan menambahkan ImageMagic ke Mac saya. Anda tidak hanya membutuhkan ImageMagick/bindi PATH, Anda juga memerlukan set variabel lingkungan, atau ditambahkan ke:

Untuk menguji Anda dapat membuatnya secara manual dengan:

export DYLD_LIBRARY=".:/opt/ImageMagic/lib"

Informasi untuk pengaturan variabel lingkungan untuk Mac OS dapat ditemukan di sini, Mengatur variabel lingkungan di OS X?

Tony
sumber