Apa cara yang tepat untuk memodifikasi variabel lingkungan seperti PATH di OS X?
Saya telah mencari di Google sedikit dan menemukan tiga file berbeda untuk diedit:
- / etc / paths
- ~ /. profil
- ~ / .tcshrc
Saya bahkan tidak memiliki beberapa file ini, dan saya cukup yakin bahwa .tcshrc salah, karena OS X menggunakan bash sekarang. Di mana variabel-variabel ini, terutama PATH, didefinisikan?
saya sedang berlari OS X v10.5 (Leopard).
macos
bash
path
environment-variables
Paul Wicks
sumber
sumber
env "switch.1.disabled=true" open -n /Applications/Eclipse.app/
untuk meluncurkan aplikasi GUI dengan lingkungan sistem set yang baru.Jawaban:
Bruno tepat di jalurnya. Saya telah melakukan penelitian ekstensif dan jika Anda ingin mengatur variabel yang tersedia di semua aplikasi GUI, satu-satunya pilihan Anda adalah
/etc/launchd.conf
.Harap perhatikan bahwa environment.plist tidak berfungsi untuk aplikasi yang diluncurkan melalui Spotlight. Ini didokumentasikan oleh Steve Sexton di sini .
Buka terminal prompt
Ketik
sudo vi /etc/launchd.conf
(catatan: file ini mungkin belum ada)Masukkan konten seperti berikut ke dalam file
Simpan perubahan Anda di vi dan reboot Mac Anda. Atau gunakan perintah
grep
/xargs
yang ditunjukkan dalam kode komentar di atas.Buktikan bahwa variabel Anda bekerja dengan membuka jendela Terminal dan mengetik
export
dan Anda akan melihat variabel baru Anda. Ini juga akan tersedia di IntelliJ IDEA dan aplikasi GUI lain yang Anda luncurkan melalui Spotlight.sumber
launchd.conf
adalah satu cara, tetapi membutuhkan reboot (untuk memulai ulang launchd). Jika Anda ingin menghindari reboot, lihat jawaban saya stackoverflow.com/questions/135688/…Cara mengatur lingkungan untuk proses baru yang dimulai oleh Spotlight (tanpa perlu reboot)
Anda dapat mengatur lingkungan yang digunakan oleh launchd (dan, dengan ekstensi, apa pun yang dimulai dari Spotlight) dengan
launchctl setenv
. Misalnya untuk mengatur jalur:Atau jika Anda ingin mengatur jalur Anda
.bashrc
atau sejenisnya, maka dicerminkan di launchd:Tidak perlu melakukan reboot meskipun Anda harus me-restart aplikasi jika Anda ingin mengambil lingkungan yang berubah.
Ini termasuk semua shell yang sudah berjalan di bawah Terminal.app, meskipun jika Anda di sana Anda dapat mengatur lingkungan lebih langsung, misalnya dengan
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
untuk bash atau zsh.Cara menjaga perubahan setelah reboot
Untuk menjaga perubahan setelah reboot, Anda dapat mengatur variabel lingkungan
/etc/launchd.conf
, seperti:launchd.conf
dijalankan secara otomatis ketika Anda reboot.Jika Anda ingin perubahan ini diterapkan sekarang, Anda harus menggunakan perintah ini untuk diproses ulang
launchctl.conf
(terima kasih @mklement atas tipnya!)Anda dapat menemukan lebih banyak tentang
launchctl
dan bagaimana memuatlaunchd.conf
dengan perintahman launchctl
.sumber
environment.plist
tidak melakukannya.etc/launchd.conf
sebelum reboot akan menggunakan pendekatan di @ jawaban MatthewMcCullough ini:egrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
.Hingga dan termasuk OS X v10.7 (Lion) Anda dapat mengaturnya di:
Lihat:
Untuk PATH di Terminal, Anda harus dapat mengatur
.bash_profile
atau.profile
(Anda mungkin harus membuatnya)Untuk OS X v10.8 (Singa Gunung) dan selanjutnya Anda harus menggunakan
launchd
danlaunchctl
.sumber
preferences.plist
kurang dari ideal dengan OS X 10.5 karena pada saatpreferences.plist
itu tidak dibaca untuk aplikasi yang diluncurkan melalui sorotan, lihat komentar oleh Louis untuk jawaban Matthew dan email.esm.psu.edu/pipermail/macosx-emacs/2010-May /002113.html . Untuk OS X 10.6environment.plist
berfungsi seperti seharusnya.Solusi untuk baris perintah dan aplikasi GUI dari satu sumber (bekerja dengan Mac OS X v10.10 (Yosemite) dan Mac OS X v10.11 (El Capitan))
Mari kita asumsikan Anda memiliki definisi variabel lingkungan di
~/.bash_profile
suka Anda di cuplikan berikut:Kami membutuhkan Agen Peluncuran yang akan berjalan pada setiap login dan kapan saja berdasarkan permintaan yang akan memuat variabel-variabel ini ke sesi pengguna. Kami juga membutuhkan skrip shell untuk menguraikan definisi ini dan membuat perintah yang diperlukan untuk dieksekusi oleh agen.
Buat file dengan
plist
akhiran (misalnya bernamaosx-env-sync.plist
) dalam~/Library/LaunchAgents/
direktori dengan konten berikut:-l
parameter sangat penting di sini; itu diperlukan untuk mengeksekusi skrip shell dengan shell login sehingga~/.bash_profile
bersumber di tempat pertama sebelum skrip ini dijalankan.Sekarang, skrip shell. Buat
~/.osx-env-sync.sh
dengan isi berikut:Pastikan skrip shell dapat dieksekusi:
Sekarang, muat agen peluncuran untuk sesi saat ini:
(Re) Luncurkan aplikasi GUI dan verifikasi bahwa itu dapat membaca variabel lingkungan.
Penyiapannya gigih. Itu akan bertahan hidup restart dan kembali.
Setelah pengaturan awal (yang baru saja Anda lakukan), jika Anda ingin mencerminkan perubahan apa pun di
~/.bash_profile
seluruh lingkungan Anda lagi, jalankan kembalilaunchctl load ...
perintah tidak akan melakukan apa yang Anda inginkan; sebagai gantinya Anda akan mendapatkan peringatan seperti berikut:<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress
Untuk memuat ulang variabel lingkungan Anda tanpa melalui proses logout / login lakukan hal berikut:
Akhirnya pastikan Anda meluncurkan kembali aplikasi yang sudah berjalan (termasuk Terminal.app) untuk membuat mereka mengetahui perubahan.
Saya juga mendorong kode dan penjelasannya di sini ke proyek GitHub: osx-env-sync .
Saya harap ini akan menjadi solusi akhir, setidaknya untuk versi terbaru OS X (Yosemite & El Capitan).
sumber
Melakukan:
File mungkin tidak ada (jika tidak, Anda bisa membuatnya).
Ketik ini dan simpan file:
Lari
sumber
export
adalah apa yang akan saya sarankan, karena BASH tidak mendukungsetenv
Pada dasarnya ada dua masalah yang harus dipecahkan ketika berhadapan dengan variabel lingkungan di OS X. Yang pertama adalah ketika menjalankan program dari Spotlight (ikon kaca pembesar di sisi kanan menu Mac / bilah status) dan yang kedua saat menjalankan program dari Dock . Menjalankan program dari aplikasi / utilitas Terminal adalah sepele karena membaca lingkungan dari lokasi shell standar (
~/.profile
,~/.bash_profile
,~/.bashrc
, dll)Saat menjalankan program dari Dock, gunakan
~/.MacOSX/environment.plist
tempat<dict>
elemen berisi urutan<key>KEY</key><string>theValue</string>
elemen.Saat menjalankan program dari Spotlight, pastikan launchd telah diatur dengan semua pengaturan kunci / nilai yang Anda butuhkan.
Untuk menyelesaikan kedua masalah secara bersamaan, saya menggunakan item login (ditetapkan melalui alat System Preferences) pada akun Pengguna saya. Item login adalah skrip bash yang menjalankan fungsi lisp Emacs meskipun tentu saja orang dapat menggunakan alat skrip favorit mereka untuk mencapai hal yang sama. Pendekatan ini memiliki manfaat tambahan yang berfungsi setiap saat dan tidak memerlukan reboot, yaitu orang dapat mengedit
~/.profile
, menjalankan item login di beberapa shell dan memiliki perubahan yang terlihat untuk program yang baru dipanggil, baik dari Dock atau Spotlight.Detail:
Item masuk:
~/bin/macosx-startup
Fungsi lisp Emacs:
~/lib/emacs/elisp/macosx/envionment-support.el
CATATAN: Solusi ini adalah campuran dari mereka yang datang sebelum saya menambahkan milik saya, terutama yang ditawarkan oleh Matt Curtis, tetapi saya sengaja mencoba untuk menjaga
~/.bash_profile
platform konten saya independen dan menempatkan pengaturanlaunchd
lingkungan (fasilitas Mac hanya) ke dalam skrip terpisah .sumber
Solusi preferensi lain, gratis, opensource, Mac OS X v10.8 (Mountain Lion) panel / environment.plist adalah EnvPane .
Kode sumber EnvPane tersedia di GitHub . EnvPane sepertinya memiliki fitur yang sebanding dengan RCEnvironment , namun, tampaknya ia dapat memperbarui variabel yang tersimpan secara instan, yaitu tanpa perlu memulai ulang atau masuk, yang disambut baik.
Seperti yang dinyatakan oleh pengembang:
Penafian: Saya sama sekali tidak terkait dengan pengembang atau proyeknya.
PS Saya suka namanya (terdengar seperti 'Berakhir Nyeri').
sumber
Pembaruan (2017-08-04)
Pada (setidaknya) MacOS 10.12.6 (Sierra) metode ini tampaknya telah berhenti bekerja untuk Apache httpd (untuk kedua
system
danuser
pilihanlaunchctl config
). Program-program lain tampaknya tidak terpengaruh. Bisa dibayangkan bahwa ini adalah bug di httpd.Jawaban asli
Ini menyangkut OS X 10.10+ (10.11+ khusus karena mode rootless mana
/usr/bin
tidak lagi dapat ditulisi).Saya telah membaca di banyak tempat yang menggunakan
launchctl setenv PATH <new path>
untuk mengaturPATH
variabel tidak berfungsi karena bug di OS X (yang tampaknya benar dari pengalaman pribadi). Saya menemukan bahwa ada cara lain yangPATH
dapat diatur untuk aplikasi yang tidak diluncurkan dari shell :Opsi ini didokumentasikan di halaman manual launchctl:
Saya telah mengkonfirmasi ini untuk bekerja dengan aplikasi GUI mulai dari Finder (yang digunakan
getenv
untuk mendapatkan PATH). Perhatikan bahwa Anda hanya perlu melakukan ini satu kali dan perubahan akan tetap ada melalui reboot.sumber
sudo launchctl procinfo <gui-pid>
menunjukkanPATH
lingkungan yang baru ditetapkan . Namunsudo launchctl config user path <new path>
sebenarnya disetel untuk semua pengguna ... (dikonfirmasi dengan menambahkan pengguna baru & menggunakan konsol python Sublime Text)sudo launchctl config user path
, bahwa ini terjadi (yang Anda anggap sebagai asumsi?).launchctl
tidak tidak memungkinkan Anda untuk mengatur variabel lingkungan sewenang-wenang. ThePATH
variabel adalah pengecualian.Di Gunung Singa semua
/etc/paths
dan/etc/launchd.conf
pengeditan tidak memberikan efek apa pun!Forum Pengembang Apple mengatakan:
Jadi saya langsung mengedit aplikasi
Info.plist
(klik kanan pada "AppName.app" (dalam hal ini SourceTree) dan kemudian "Show package contents
").Dan saya menambahkan pasangan kunci / dikte baru bernama:
(lihat: Dokumentasi LaunchServicesKeys di Apple )
Sekarang aplikasi (dalam kasus saya Sourcetree) menggunakan path yang diberikan dan bekerja dengan Git 1.9.3 :-)
PS: Tentu saja Anda harus menyesuaikan entri Path dengan kebutuhan path spesifik Anda.
sumber
Info.plist
file aplikasi maka aplikasi gagal dimuat:LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
Sementara jawaban di sini tidak "salah", saya akan menambahkan yang lain: jangan pernah membuat perubahan variabel lingkungan di OS X yang memengaruhi "semua proses", atau bahkan, di luar shell, untuk semua proses yang dijalankan secara interaktif oleh pengguna tertentu.
Dalam pengalaman saya, perubahan global ke variabel lingkungan seperti PATH untuk semua proses bahkan lebih mungkin untuk memecahkan hal-hal pada OS X daripada di Windows. Alasannya, banyak aplikasi OS X dan perangkat lunak lain (termasuk, mungkin terutama, komponen OS itu sendiri) bergantung pada alat-alat baris perintah UNIX di bawah tenda, dan menganggap perilaku versi dari alat-alat ini disediakan dengan sistem, dan tidak perlu menggunakan jalur absolut saat melakukannya (komentar serupa berlaku untuk pustaka yang dimuat secara dinamis dan variabel lingkungan DYLD_ *). Pertimbangkan, misalnya, bahwa jawaban dengan nilai tertinggi untuk berbagai pertanyaan Stack Overflow tentang mengganti versi penerjemah yang disediakan OS X seperti Python dan Ruby umumnya mengatakan "jangan lakukan ini."
OS X benar-benar tidak berbeda dari sistem operasi mirip UNIX lainnya (misalnya, Linux, FreeBSD, dan Solaris) dalam hal ini; alasan yang paling mungkin mengapa Apple tidak menyediakan cara mudah untuk melakukan ini adalah karena hal itu merusak banyak hal . Sejauh Windows tidak rentan terhadap masalah ini, itu disebabkan oleh dua hal: (1) perangkat lunak Windows cenderung tidak bergantung pada alat baris perintah sejauh perangkat lunak UNIX, dan (2) Microsoft telah memiliki seperti sejarah "DLL hell" dan masalah keamanan yang disebabkan oleh perubahan yang memengaruhi semua proses sehingga mereka mengubah perilaku pemuatan dinamis dalam versi Windows yang lebih baru untuk membatasi dampak opsi konfigurasi "global" seperti PATH.
"Lame" atau tidak, Anda akan memiliki sistem yang jauh lebih stabil jika Anda membatasi perubahan tersebut pada cakupan yang lebih kecil.
sumber
Terkadang semua jawaban sebelumnya tidak berhasil. Jika Anda ingin memiliki akses ke variabel sistem (seperti
M2_HOME
) di Eclipse atau di IntelliJ IDEA, satu-satunya hal yang berfungsi untuk saya dalam hal ini adalah:Sunting (langkah 1) pertama yang
/etc/launchd.conf
berisi baris seperti ini: "setenv VAR value" dan kemudian (langkah 2) reboot.Cukup memodifikasi .bash_profile tidak akan berfungsi karena di OS X aplikasi tidak dimulai seperti di Unix'es lainnya; mereka tidak mewarisi variabel shell induknya. Semua modifikasi lainnya tidak akan berfungsi karena alasan yang tidak saya ketahui. Mungkin orang lain bisa mengklarifikasi tentang ini.
sumber
Setelah mengejar panel preferensi Variabel Lingkungan dan menemukan bahwa tautan rusak dan pencarian di situs Apple tampaknya mengindikasikan mereka telah melupakannya ... Saya mulai kembali ke jejak proses launchd yang sulit dipahami.
Pada sistem saya (Mac OS X 10.6.8) tampak bahwa variabel didefinisikan dalam environment.plist yang sedang andal diekspor ke aplikasi diluncurkan dari Spotlight (melalui launchd). Masalah saya adalah bahwa vars tersebut tidak diekspor ke sesi bash baru di Terminal. Yaitu saya memiliki masalah sebaliknya seperti yang digambarkan di sini.
CATATAN: environment.plist terlihat seperti JSON, bukan XML, seperti yang dijelaskan sebelumnya
Saya bisa mendapatkan aplikasi Spotlight untuk melihat vars dengan mengedit ~ / MacOSX / environment.plist dan saya bisa memaksa vars yang sama ke sesi Terminal baru dengan menambahkan yang berikut ke file .profile saya:
sumber
man launchd
,man launchctl
, danman launchd.conf
di jendela terminal. Senang Apple memperbarui halaman manual, bahkan jika Perpustakaan Pengembang Mac sedikit terlambat.Setiap file yang Bash startup -
~/.bashrc
,~/.bash_profile
,~/.profile
. Ada juga semacam file aneh bernama~/.MacOSX/environment.plist
untuk variabel lingkungan di aplikasi GUI.sumber
Sama seperti jawaban yang diberikan Matt Curtis, saya menetapkan variabel lingkungan melalui launchctl, tetapi saya membungkusnya dalam fungsi yang disebut ekspor, sehingga setiap kali saya mengekspor variabel seperti biasa di .bash_profile, itu juga diatur oleh launchctl. Inilah yang saya lakukan:
.Bash_profile saya hanya terdiri dari satu baris, (Ini hanya preferensi pribadi.)
.Bashrc saya memiliki ini:
Hal di atas akan membebani Bash bawaan dalam "ekspor" dan akan mengekspor semuanya secara normal (Anda akan melihat saya mengekspor "ekspor" dengan itu!), Lalu mengaturnya dengan benar untuk lingkungan aplikasi OS X melalui launchctl, apakah Anda menggunakan salah satu dari yang berikut:
Dengan cara ini saya tidak perlu mengirim setiap variabel ke launchctl setiap waktu, dan saya bisa mengatur .bash_profile / .bashrc saya mengatur seperti yang saya inginkan. Buka jendela terminal, periksa variabel lingkungan yang Anda minati
launchctl getenv myVar
, ubah sesuatu di .bash_profile / .bashrc Anda, tutup jendela terminal dan buka kembali, periksa lagi variabel dengan launchctl, dan voilá, itu diubah.Sekali lagi, seperti solusi lain untuk dunia Lion Mountain, untuk variabel lingkungan baru yang tersedia untuk aplikasi, Anda perlu meluncurkan atau meluncurkannya kembali setelah perubahan.
sumber
Berikut adalah cara yang sangat sederhana untuk melakukan apa yang Anda inginkan. Dalam kasus saya, membuat Gradle berfungsi (untuk Android Studio).
Jalankan perintah berikut:
sudo nano /etc/paths
atausudo vim /etc/paths
Masukkan kata sandi Anda, saat diminta.
Buka jendela terminal baru kemudian ketik:
echo $PATH
Anda akan melihat jalur baru ditambahkan ke akhir PATH.
Saya mendapat detail ini dari pos ini:
Tambahkan ke PATH pada Mac OS X 10.8 Mountain Lion dan yang lebih tinggi
sumber
Saya pikir OP sedang mencari solusi sederhana, seperti Windows.
Ini dia:
http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html
sumber
Agar singkat dan jelas tentang apa yang dimaksudkan untuk setiap file
~/.profile
bersumber setiap kali Terminal.app diluncurkan~/.bashrc
Di sinilah "secara tradisional" semua pernyataan ekspor untuk lingkungan Bash ditetapkan/etc/paths
adalah file utama di Mac OS yang berisi daftar jalur default untuk membangun variabel lingkungan PATH untuk semua pengguna/etc/paths.d/
berisi file yang berisi jalur pencarian tambahanProgram-program non-terminal tidak mewarisi variabel PATH dan MANPATH di seluruh sistem seperti yang dilakukan terminal Anda! Untuk mengatur lingkungan untuk semua proses yang diluncurkan oleh pengguna tertentu, sehingga membuat variabel lingkungan tersedia untuk aplikasi Mac OS X GUI, variabel-variabel tersebut harus ditentukan di
~/.MacOSX/environment.plist
(Tanya Jawab Teknis Apple QA1067)Gunakan baris perintah berikut untuk menyinkronkan Anda
environment.plist
dengan/etc/paths
:sumber
/etc/launchd.conf tidak digunakan di OS X v10.10 (Yosemite), OS X v10.11 (El Capitan), macOS v10.12 (Sierra), atau macOS v10.13 (Sierra Tinggi).
Dari
launchctl
halaman manual:Metode yang dijelaskan dalam jawaban Ask Different ini berfungsi untuk saya (setelah reboot): aplikasi yang diluncurkan dari Dock atau dari Spotlight mewarisi variabel lingkungan yang saya atur
~/Library/LaunchAgents/my.startup.plist
. (Dalam kasus saya, saya perlu mengaturLANG
, untuken_US.UTF-8
, untuk plugin Teks Sublime.)sumber
The
$PATH
variabel juga dikenakanpath_helper
, yang pada gilirannya membuat penggunaan/etc/paths
berkas dan file di/etc/paths.d
.Deskripsi yang lebih menyeluruh dapat ditemukan di PATH dan masalah lingkungan lainnya di Leopard (2008-11)
sumber
Itu mudah:
Edit ~ / .profile dan letakkan variabel Anda sebagai berikut
Dalam file put:
Simpan (: wq)
Mulai ulang terminal (Berhenti dan buka lagi)
Pastikan semuanya baik-baik saja:
sumber
Untuk satu modifikasi pengguna, gunakan
~/.profile
yang Anda daftarkan. Tautan berikut menjelaskan kapan berbagai file dibaca oleh Bash.http://telin.ugent.be/~slippens/drupal/bashrc_and_others
Jika Anda ingin mengatur variabel lingkungan untuk aplikasi gui, Anda memerlukan file ~ / .MacOSX / environment.plist
sumber
Yah, saya tidak yakin tentang
/etc/paths
dan~/.MacOSX/environment.plist
file. Itu baru.Tetapi dengan Bash, Anda harus tahu bahwa
.bashrc
dieksekusi dengan setiap permintaan shell baru dan.bash_profile
hanya dieksekusi sekali pada saat startup.Saya tidak tahu seberapa sering ini dengan Mac OS X. Saya pikir perbedaannya telah rusak dengan sistem jendela meluncurkan segalanya.
Secara pribadi, saya menghilangkan kebingungan dengan membuat
.bashrc
file dengan semua yang saya butuhkan dan kemudian melakukan:sumber
Satu hal yang perlu diperhatikan selain pendekatan yang disarankan adalah bahwa, dalam OS X 10.5 (Leopard) setidaknya, variabel yang diatur
launchd.conf
akan digabungkan dengan pengaturan yang dibuat.profile
. Saya kira ini mungkin juga berlaku untuk pengaturan~/.MacOSX/environment.plist
, tetapi saya belum memverifikasi.sumber
Atur variabel lingkungan PATH Anda di Mac OS
Buka program Terminal (ini ada di folder Aplikasi / Utilitas Anda secara default). Jalankan perintah berikut
Ini akan membuka file di editor teks default Anda.
Untuk Android SDK sebagai contoh:
Anda perlu menambahkan path ke direktori platform-alat dan alat SDK Android Anda. Dalam contoh saya, saya akan menggunakan "/ Development / android-sdk-macosx" sebagai direktori tempat SDK diinstal. Tambahkan baris berikut:
Simpan file dan keluar dari editor teks. Jalankan .bash_profile Anda untuk memperbarui PATH Anda:
Sekarang setiap kali Anda membuka program Terminal, PATH Anda akan menyertakan Android SDK.
sumber
Lakukan saja ini sangat mudah dan cepat. Pertama buat ~ / .bash_profile dari terminal:
kemudian
Menambahkan
simpan dokumen dan Anda selesai.
sumber
Sederhana saja. Edit file
.profile
(vi, nano , Teks Sublime atau editor teks lainnya). Anda dapat menemukannya di~/
direktori (direktori pengguna) dan atur seperti ini:Contoh dengan Java home:
Simpan dan kembali ke terminal.
Anda dapat memuatnya kembali dengan:
Atau tutup dan buka jendela terminal Anda.
sumber
Ada dua jenis kerang yang dimainkan di sini.
Sangat penting untuk memahami di sini bahwa dengan Bash, berkas
.bashrc
hanya dibaca oleh shell yang baik interaktif dan non-login, dan Anda akan menemukan bahwa orang sering memuat.bashrc
dalam.bash_profile
mengatasi keterbatasan ini.Sekarang setelah Anda memiliki pemahaman dasar, mari beralih ke bagaimana saya akan menyarankan Anda untuk mengaturnya.
.bash_file:
sumber
Login Shells
Shell pertama kali mengeksekusi perintah dalam file
/etc/profile
. Seorang pengguna yang bekerja dengan hak akses root dapat mengatur file ini untuk menetapkan karakteristik default seluruh sistem untuk pengguna yang menjalankan Bash.Berikutnya terlihat shell untuk
~/.bash_profile
,~/.bash_login
dan~/.profile
(~ / tangan pendek untuk direktori rumah Anda), agar, mengeksekusi perintah dalam pertama file-file ini ditemukan. Anda dapat menempatkan perintah di salah satu file ini untuk mengganti default yang ditetapkan/etc/profile
. Shell yang berjalan pada terminal virtual tidak menjalankan perintah dalam file ini.Saat Anda keluar, bash mengeksekusi perintah di
~/.bash_logout
file. File ini sering memegang perintah yang membersihkan setelah sesi, seperti yang menghapus file sementara.Kerang Nonlogin Interaktif
Meskipun tidak dipanggil oleh bash secara langsung, banyak
~/.bashrc
file memanggil/etc/bashrc
. Setup ini memungkinkan pengguna yang bekerja dengan hak root untuk membangun karakteristik default seluruh sistem untuk shell bash nonlogin.Shell nonlogin interaktif menjalankan perintah dalam
~/.bashrc
file. Biasanya file startup untuk shell login, seperti.bash_profile
, menjalankan file ini, jadi baik shell login maupun nonlogin menjalankan perintah.bashrc
.Karena perintah di
.bashrc
dapat dieksekusi berkali-kali, dan karena subkulit mewarisi variabel yang diekspor, sebaiknya masukkan perintah yang menambah variabel yang ada dalam.bash_profile
file.sumber
Semua keajaiban di iOS hanya sesuai dengan penggunaan
source
dengan file, tempat Anda mengekspor variabel lingkungan Anda.Sebagai contoh:
Anda dapat membuat file seperti ini:
Simpan file ini sebagai
bimbom.env
, dan lakukansource ./bimbom.ev
. Voa, Anda punya variabel lingkungan Anda.Periksa dengan:
sumber
Untuk Bash, coba tambahkan variabel lingkungan Anda ke file
/etc/profile
untuk membuatnya tersedia untuk semua pengguna. Tidak perlu reboot, cukup memulai sesi Terminal baru.sumber