Untuk membuat alias untuk Terminal di OS X, Anda dapat memasukkan alias di .bash_profile
atau .bashrc
. Apa perbedaan antara keduanya dan mengapa saya memilih untuk menempatkan alias di satu dan bukan yang lain?
terminal
command-line
bash
daviesgeek
sumber
sumber
brew install bash
dan menggunakan iTerm2, Anda bisa mengaturprofile -> command
untuk/usr/local/bin/bash
yang akan memuat.bashrc
secara default setelah.bash_profile
. Ini juga memberi Anda barang Bash 4 ...Jawaban:
.bash_profile
dieksekusi untuk shell login, sementara.bashrc
dieksekusi untuk shell non-login interaktif.Saat Anda masuk (ketikkan nama pengguna dan kata sandi) melalui konsol, baik duduk di mesin, atau dari jarak jauh melalui ssh:
.bash_profile
dijalankan untuk mengkonfigurasi shell Anda sebelum prompt perintah awal.Tetapi, jika Anda sudah masuk ke mesin Anda dan membuka jendela terminal baru (xterm) maka
.bashrc
dieksekusi sebelum jendela command prompt..bashrc
juga dijalankan ketika Anda memulai instance bash baru dengan mengetikkan/bin/bash
terminal.Pada OS X, Terminal secara default menjalankan shell login setiap waktu, jadi ini sedikit berbeda dengan kebanyakan sistem lain, tetapi Anda dapat mengonfigurasinya dalam preferensi.
sumber
On OS X, Terminal by default runs a login shell every time
- Saya selalu bingung dengan tidak menyadarinya. Info bagus!.zprofile
dijalankan setiap saat.X11 akan melihat Anda
.bashrc
sementara Terminal "biasa" akan melihatnya.bash_profile
Namun, jika Anda menambahkan berikut ini ke Anda
.bash_profile
, Anda kemudian dapat memindahkan semuanya ke dalam.bashrc
file Anda untuk menggabungkan semuanya menjadi satu tempat, bukan dua:sumber
cd ~ ; ln -s .bashrc .bash_profile
.~/.bash_profile
). Hal ini juga sering diperlukan untuk memiliki hal-hal untuk mendefinisikan incrementaly di setiap level shell (~/.bashrc
). Bukan ide terbaik untuk menyarankan untuk menekan kebebasan ini.~/.bash_profile
untuk setiap jendela / tab baru, jadi tidak ada cara untuk memisahkan keduanya sejauh menyangkut Terminal..bash_profile
tidak pernah bisa bersumber lagi dalam proses anak. Setiap tingkat sumber Bash bersarang.bashrc
, jadi jika Anda meletakkan sesuatu sepertiexport A=a:$A
di.bashrc
, Anda$A
akan mendapatkan lagi di Bash bersarang. Saya biasanya meninggalkan variabel lingkungan di profil, dan alias di RC.Untuk macOS, kode yang harus dimasukkan
.bash_profile
untuk menggabungkan semuanya.bashrc
adalah sebagai berikut:Ini lebih spesifik untuk pengguna terminal Mac.
sumber
TLDR; gunakan
.bash_profile
untuk alias Anda.Cara berbagai file inisialisasi bekerja sama sedikit lebih rumit, dan ada beberapa kasus khusus yang penting di OSX. Berikut adalah hal-hal menariknya:
.bash_profile
disebut. Demikian saran TLDR di atas..bashrc
juga merupakan opsi, tetapi itu akan dipanggil setiap kali Anda membuat subkulit (yaitu, panggilbash
), yang dapat membuat inefisiensi jika Anda memperbarui variabel di dalamnya (misalnya,PATH=/bin/foo:$PATH
).bashrc
dari.bash_profile
cukup umum. Saya tidak merekomendasikan itu, tetapi itu adalah preferensi.sumber
.bash_profile
alias alias rumit? Item yang Anda daftarkan sebagian hanya tentang alias sama sekali, jadi alih-alih hanya membuat daftar beberapa peluru yang mungkin menjelaskan mengapa tampaknya rumit, bisakah Anda mengusulkan cara untuk membuatnya lebih mudah dalam batasan ini?