Ketika saya echo $ PATH saya mendapatkan ini: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools
.
Saya ingin menghapus beberapa jalur dari ini, tetapi ketika saya membuka file menggunakan perintah vim /etc/paths
, saya mendapatkan hasil berikut:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Apakah file / etc / path berbeda dari variabel $ PATH?
/etc/paths
, tetapi saya berlari10.4.11
dan hal-hal mungkin telah berubah sejak saat itu/etc/paths
digunakan untuk menghasilkan default$PATH
, yang nantinya dapat Anda modifikasi~/.bashrc
atau~/.profile
Jawaban:
/etc/paths
adalah bagian dari apa yang digunakan untuk mengatur$PATH
proses shell. Ketika Anda membuka jendela Terminal baru, itu dimulaibash
, yang menjalankan beberapa skrip startup:/etc/profile
DAN~/.bash_profile
ATAU (jika itu tidak ada)~/.bash_login
ATAU (jika itu tidak ada juga)~/.profile
. Script ini mengatur lingkungan shell, termasuk$PATH
.Salah satu hal yang
/etc/profile
dilakukan adalah menjalankan/usr/libexec/path_helper
, yang membaca/etc/paths
dan semua file masuk/etc/paths.d
, dan menambahkan isinya$PATH
. Tetapi ini hanyalah titik awal; skrip startup Anda sendiri (jika ada) dapat ditambahkan ke$PATH
, edit, ganti sepenuhnya, dll.Bagi saya sepertinya skrip startup Anda (dan / atau hal-hal yang dijalankannya) menambahkan sejumlah entri ke set dasar yang didapatnya
/etc/paths
. "Users / myusername / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:" ditambahkan ke awal$PATH
(artinya direktori tersebut akan dicari terlebih dahulu), dan ": / Users / mac / Library / Android / sdk / platform-tools: / platform-tools "ditambahkan di bagian akhir. Jika Anda ingin tahu persis apa yang menambahkannya, Anda perlu melihat skrip startup Anda.BTW, proses pengaturan ini
$PATH
hanya berlaku untuk bash "login" shells. Apa pun yang dijalankan oleh bash shell akan mewarisi$PATH
darinya, jadi mungkin pada dasarnya memiliki hal yang sama. bash shell non-login mengikuti proses pengaturan yang agak berbeda. Kerang lain, dan hal-hal yang tidak dimulai dari shell sama sekali (mis. Pekerjaan cron) mungkin sama sekali berbeda$PATHs
.sumber
/usr/local/bin/bash
Seperti yang diinstal olehbrew
, tanpa-l
argumen),/usr/libexec/path_helper
tidak digunakan, dan/usr/local/bin
tidak disertakan secara default di$PATH
. Untuk digunakanpath_helper
dalam skrip atau secara interaktif, perintahnya adalaheval $(/usr/libexec/path_helper)
.Tempat pertama yang saya cari untuk memeriksa modifikasi adalah,
Jika Anda menggunakan sesuatu yang bukan Bash, periksa file konfigurasi untuk melihat apakah ada penyebutan PATH.
sumber