Bagaimana cara mereset variabel $ PATH pada Mac OS X?

17

Saya telah mengacaukan variabel jalur saya, dan sekarang beberapa aplikasi yang saya jalankan meningkatkan kesalahan dengan mengatakan Perintah Tidak Ditemukan (kesalahan 127) untuk perintah seperti tanggal dan tidur . Perintah-perintah ini berfungsi dengan baik ketika dieksekusi langsung di shell.

Saya menduga ini ada hubungannya dengan variabel $ PATH salah bentuk, dan perlu tahu cara mengatur ulangnya. Saya telah menghapus file ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc , dan ~ / .bashrc dan ~ / .profile .

File apa lagi yang bisa menampung $ PATH saya ? Apakah ada cara yang lebih sederhana untuk mereset Path daripada menggali ke dalam banyak file yang bisa menampung path saya?

Catatan, masalah jalur ini hanya pada pengguna saya. Saya membuat pengguna uji pada sistem saya, dan jalannya baik-baik saja, kembali normal.

PEMBARUAN: Terima kasih. Saya tidak tahu yang mana dari file yang saya hapus melakukannya, tetapi semuanya bekerja kembali. Kalian melakukan apa yang para ahli tidak bisa. Dan ya, Chris, Anda benar. Kustomisasi PATH yang saya buat adalah di bash_login. Tapi entah bagaimana itu berhasil tanpa saya menghapus penyesuaian itu. Saya pikir itu mungkin karena saya menggunakan prefpane yang disebut 'RCEnvironment', dan saya telah memasuki jalur dengan tanda kutip dan: PATH di dalamnya. Saya tidak tahu apakah perlu mengutip, dan itu tidak menggantikan: $ PATH, jadi mungkin itu adalah akar kesalahan. Aku lupa aku bahkan punya prefpane itu!

Neil
sumber
1
/ etc / profile adalah tempat yang paling mungkin untuk pengaturan nilai awal untuk PATH, tetapi sesuatu di sana akan mempengaruhi semua pengguna. Ada juga ~ / .bash_login, yang tidak Anda daftarkan (meskipun Anda mungkin sudah menghilangkannya).
Chris Johnsen

Jawaban:

19

Jika Anda memiliki file ~ / .MacOSX / environment.plist, periksa untuk melihat apakah file tersebut menyediakan nilai PATH default.

Jika dalam format XML (daftar dapat dalam banyak format), Anda dapat mengedit dengan editor teks apa pun. Periksa dengan plutil -lint ~/.MacOSX/environment.plistapakah Anda mengeditnya dengan tangan.

Atau, Anda dapat menggunakan perintah seperti default atau PlistBuddy untuk membuat modifikasi terkontrol ke file format XML atau biner.


Anda selalu dapat mengatur PATH Anda sendiri di file inisialisasi shell Anda.

Letakkan sesuatu seperti berikut di file startup shell Anda ( .bashrc, atau .bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

Itu akan menimpa apa pun PATH default yang ditetapkan saat shell dimulai (yang pertama PATH=tidak digunakan $PATH, jadi itu akan selalu dimulai hanya dengan apa pun yang Anda berikan).

Hanya satu dari file yang 'login' akan pernah digunakan (yang pertama yang ada dan dapat dibaca dari ~/.bash_profile, ~/.bash_login, dan ~/.profileakan digunakan). .profileadalah untuk kompatibilitas mundur dengan shell lain — jika Anda menggunakannya, pastikan untuk tetap bebas dari sintaksis yang khusus untuk bash . Jika Anda menggunakan .bash_loginatau .bash_profile(mereka secara fungsional setara kecuali untuk nama-nama), maka gunakan garis seperti di [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]dekat bagian atas sehingga shell login juga akan mendapatkan kustomisasi yang dibuat di blog Anda .bashrc.

Jika Anda ingin semua instance bash memiliki PATH yang sama, maka gunakan .bashrc. Jika Anda sering menemukan diri Anda secara interaktif memodifikasi PATH satu shell dari baris perintah dan ingin menggunakan PATH yang dimodifikasi itu dalam subkulit (kasus yang mungkin tidak terlalu umum), maka Anda harus meletakkan pernyataan di salah satu file 'login' sebagai gantinya . Pilih hanya satu dari file login dan gunakan.

Chris Johnsen
sumber
8

1. Buka terminal Anda

2.You pertama bisa hanya memeriksa saat ini $PATH, ketik

echo $ PATH

ke terminal

3.Jika $PATHterminal yang dikembalikan adalah jalur yang Anda inginkan, maka Anda baik; jika tidak, ketikkan

ekspor PATH = / usr / bin: / bin: / usr / sbin: / sbin

, lalu ketik

sentuh ~ / .bash_profile

, lalu ketik

buka ~ / .bash_profile

, Anda kemudian akan menemukan EditText terbuka, sekarang ketik jalur yang Anda inginkan di EditText itu; Misalnya, ketik

PATH = / usr / bin: / bin: / usr / sbin: / sbin

(yang merupakan default $PATHuntuk mac, mengingat Anda ingin mengatur ulang $PATHsehingga Anda mungkin harus mengetik ini), simpan, lalu tutup EditText, lalu tutup Terminal.

4. Sekarang Anda telah mengubah $PATHatau mengatur ulang ke default mac $PATH!

rObOtAndChalie
sumber
2
Saya merasa ada banyak hal di atas yang tidak berpengaruh. Menurut Anda mengapa touchdiperlukan? Juga, ketika Anda menutup Terminal, mengapa menjalankan exportperintah pada baris, daripada hanya menambahkannya ke ~/.bash_profile(yang perlu exportjuga) dan dilakukan dengan itu? (Atau, jalankan source ~/.bash_profileuntuk menerapkan perubahan ke jendela saat ini.)
Arjan
Benar, beberapa di antaranya berlebihan. Menyimpan nilai PATH apa pun untuk .bash_profile harus dilakukan.
ThinkCode
1

rc/profileHasil edit Chris Johnson yang ditampilkan juga berfungsi dengan baik /etc/profile.

Saya baru saja menambahkan:

export PATH="/usr/local/mariadb/bin:$PATH"

ke /etc/profilefile saya di Mac OS X 10.9 Mavericks untuk menyelesaikan instalasi MariaDB (yang berfungsi sebagai pengganti drop-in untuk MySQL).

zigmoo
sumber