Di mana menemukan file .bashrc di Mac OS X Snow Leopard and Lion?

89

Saya ingin menginstal rvm di mesin Snow Leopard saya.

Dikatakan saya perlu menambahkan baris ke .bashrcfile saya (saya menggunakan bash) tetapi di mana .bashrcfile saya ?

Yuval
sumber
1
Anda harus memasukkan solusi Anda dalam jawaban dan menerimanya (Anda harus menunggu satu atau dua hari sebelum SU mengizinkan Anda untuk melakukannya) Dengan cara itu orang-orang dengan masalah yang sama dapat melihat pertanyaan yang dapat melihat bahwa ia memiliki jawaban.
Nifle
1
Solusinya tidak berbeda dengan jawaban pilihan teratas ..
David Cowden
Hanya untuk memastikan, ini bukan masalah "Linux = .bashrc vs Mac OS =. (Bash_) profil" file startup shell bekerja sama di Linux dan Mac dan file .bashrc adalah tempat yang lebih ramah untuk Sesi pengaturan khusus. Anda gunakan misalnya tmux atau layar Anda mungkin tidak memiliki sesi login tetapi masih ingin alias Anda. Alasan Mac merasa berbeda adalah bahwa sebagian besar distribusi Linux mengirimkan skrip profil sistem atau profil kerangka yang sudah mendelegasikan (sumber) bashrc.
eckes

Jawaban:

78

Mengenai masalah dengan di .bashrcatas:

Pada sebagian besar sistem, ~/.bashrchanya digunakan ketika memulai shell non-login interaktif . Namun, saat Anda memulai shell baru, sering kali shell login interaktif . Karena ini adalah shell login , maka .bashrcdiabaikan. Agar lingkungan tetap konsisten antara non-login dan shell login, Anda harus mengambil .bashrcdari .profileatau dari Anda .bash_profile.

Lihat Manual Referensi Bash, bagian 6.2 Bash Startup Files

Dipanggil sebagai shell login interaktif, atau dengan --login

Ketika Bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan opsi --login, Bash pertama kali membaca dan mengeksekusi perintah dari file / etc / profile, jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan itu, dan membaca serta mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca.

Dipanggil sebagai shell non-login interaktif

Ketika shell interaktif yang bukan shell login dimulai, Bash membaca dan mengeksekusi perintah dari ~ / .bashrc, jika file itu ada.

Jadi, biasanya, ~ / .bash_profile Anda berisi baris

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

setelah (atau sebelum) inisialisasi khusus login.

Di Mac saya (Running Leopard), tidak ada baris ke sumber ~/.bashrc. Saya harus menambahkan fungsi ini sendiri.

Pada beberapa sistem dan OS lainnya, .bashrcbersumber dari global /etc/profileatau /etc/bash_profile, atau dilakukan dengan menggunakan file templat dari /etc/skel.

Jujur perbedaan antara .bashrcdan .bash_profiletidak dipahami dengan baik oleh masyarakat. Ketika banyak pengembang mengatakan "Tambahkan ini ke .bashrc Anda", yang sebenarnya mereka maksud adalah "Tambahkan ini ke .bash_profile Anda". Mereka ingin fungsi ditambahkan ke shell login Anda (yang .bash_profile), bukan ke shell non-login Anda . Pada kenyataannya, biasanya tidak masalah dan menempatkan konfigurasi .bashrcdapat diterima.

Stefan Lasiewski
sumber
Tautan ini memberikan gambaran yang baik tentang jenis kerang dan kapan file startup dimuat - hacktux.com/bash/bashrc/bash_profile
studgeek
Apa yang dimaksud dengan "bersumber" di sini?
elgrego
@elgrego, inilah deskripsi yang bagus: Ketika sebuah file bersumber (dengan mengetikkan salah satu nama file sumber atau. nama file pada baris perintah), baris kode dalam file dieksekusi seolah-olah mereka dicetak pada baris perintah. Lihat tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski
60

Jadi ternyata pada Mac OS X Snow Leopard dan juga Mac OS X Lion, file yang dimuat dipanggil .profile, bukan .bashrc.

Apa yang ingin Anda lakukan adalah membuat file ~/.profiledan menyebutnya. Profil (jika belum ada).

Letakkan informasi apa pun yang Anda perlu memuat dengan setiap instance dari bash di sana (Terima kasih, thepurplepixel).

Beberapa catatan tambahan:

  1. Periode di depan file menandainya sebagai tidak terlihat oleh Finder dan perintah ls secara default. Untuk membuat daftar file yang tidak terlihat menggunakan perintah ls dari Terminal, gunakan -asebagai parameter seperti itu:ls -a
  2. The ~simbol singkatan /Users/YourUserNamemana YourUserName adalah nama pendek nama pengguna Anda.

Sunting: Chris Page mencatat (dengan benar) bahwa apa pun yang Anda tempatkan dalam file profil. Berlaku untuk shell apa pun yang Anda gunakan (yaitu zhs, bash, dan lain-lain). Jika Anda ingin konten hanya memengaruhi bash shell, tempatkan konten dalam .bash_profilefile, bukan .profilefile.

Yuval
sumber
5
Pertanyaan Anda dijawab [dengan benar] pada 1 Juni 2010 - sehari setelah Anda menanyakannya. Lebih dari setahun kemudian, Anda kembali dan memberikan jawaban yang sama persis dan menerima jawaban Anda sendiri ...
David Cowden
3
Sebenarnya jawabannya memang menambahkan lebih detail daripada jawaban yang diberikan pada 1 Juni 2010. Dia secara khusus membahas masalah pada Mac OS X yang menurut saya bermanfaat.
webworm
3
Perhatikan bahwa jika .bash_profilesudah ada di direktori home Anda, maka .profilefile tidak akan dibaca!
Phani
Saya memiliki Install baru untuk Mac Os El capitan. Tidak ada file profil . Cukup buat file profil. Dan itu berfungsi. Saya pribadi mengubah nama .bashrc menjadi .profile.
Nicolas Thery
4

Anda harus membuatnya sendiri .bashrc. Anda cukup menggunakan editor teks untuk membuat file bernama .bashrc(tanpa ekstensi) dengan konten yang Anda inginkan dan menyimpannya di direktori home Anda ( /Users/YourUserName/).

tupai
sumber
1
sebenarnya, itu tidak berhasil, tetapi Anda mengirim saya ke arah yang benar dengan mengatakan kepada saya untuk membuat file saya sendiri. File yang berfungsi pada konfigurasi Snow Leopard adalah .profile, bukan .bashrc (yang karena alasan tertentu tidak dimuat dalam OS ini). Saya akan memposting instruksi terperinci dalam pertanyaan. Terima kasih!
Yuval
@Yuval: Secara default, a .bashrcakan berfungsi, tetapi hanya jika tidak ada .profile. Saya kira ~/.profileada secara default. Senang bisa membantu! (Dan Anda harus meletakkan solusi Anda dalam jawaban dan menerimanya untuk pembaca masa depan dari pertanyaan ini).
Tupai
Saya pikir komentar Anda hanya jika tidak ada. Profil salah. .bashrc akan bekerja di dalam shell non-login interaktif, atau jika itu bersumber dari .profile (.bash_profile mungkin merupakan tempat yang lebih baik, karena .profile adalah untuk shell Bourne). . profil digunakan selama shell non-login interaktif.
Stefan Lasiewski
@Stefan Kedengarannya benar, kalau begitu. Saya bukan ahli :)
squircle
2
Tidak ada yang;). Hal-hal ini (.bashrc vs .profile vs. .bash_profile vs. .bash_login vs shell login interaktif vs shell non-login interaktif vs shell non-interaktif) membingungkan, dan itu rusak dan diganti oleh banyak Unix dan skrip shell.
Stefan Lasiewski
3

Saya menemukan bahwa di OS saya 10.6.5 pengaturan bash berada di "/ etc / bashrc". Saya pikir ini adalah spesifikasi tingkat atas untuk shell.

Namun, Anda memerlukan akun root untuk memodifikasinya. Spesifikasi per pengguna lokal "~ / .bashrc" harus dimulai dengan cuplikan berikut, untuk membaca dan memuat pengaturan bash tingkat sistem:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

Saya biasanya menambahkan alias di bashrc tingkat sistem sehingga semua pengguna dapat mengaksesnya juga. Kecuali mereka tidak ingin menggunakan pintasan dan alias Anda.

Semoga berhasil!

geekborj
sumber
2
/ etc / profile (dijalankan oleh shell login) adalah skrip startup global bash yang berlaku untuk semua pengguna dan menyediakan perilaku default untuk shell login. Ini pada gilirannya menjalankan / etc / bashrc, yang berisi penyesuaian yang berlaku untuk shell login maupun non-login. Demikian pula, masing-masing pengguna harus membuat file ~ / .bash_profile yang menjalankan ~ / .bashrc, yang merupakan tempat sebagian besar penyesuaian, dan ~ / .bashrc harus menjalankan / etc / bashrc untuk mewarisi perilaku default untuk shell non-login.
Chris Page
1
Untuk pengguna individu, lebih baik menambahkan kustomisasi ini ke direktori home Anda di ~/.bashrc, bukan /etc/bashrc. /etc/bashrcadalah pengaturan global untuk semua pengguna di sistem Anda, yang mungkin bukan yang Anda inginkan. Selain itu, Apple dapat datang dan berubah /etc/bashrcsecara berkala, yang dapat menghilangkan kustomisasi Anda.
Stefan Lasiewski
1

Gunakan file .profile untuk menambahkan apa pun yang ingin Anda tambahkan ke file .bashrc linux.

Sebagai contoh

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 
mempercepat gambar
sumber
2
Saya sarankan Anda menggunakan ~ / .bash_profile (bukan ~ / .profile) kecuali Anda yakin Anda ingin kustomisasi Anda berlaku di shell lain dan kompatibel.
Chris Page
Hanya untuk memastikan, ini bukan masalah "Linux = .bashrc vs Mac OS =. (Bash_) profil" file startup shell bekerja sama di Linux dan Mac dan file .bashrc adalah tempat yang lebih ramah untuk Sesi pengaturan khusus. Anda gunakan misalnya tmux atau layar Anda mungkin tidak memiliki sesi login tetapi masih ingin alias Anda. Alasan Mac merasa berbeda adalah bahwa sebagian besar distribusi Linux mengirimkan skrip profil sistem atau profil kerangka yang sudah mendelegasikan (sumber) bashrc.
eckes