Mac OS X .bashrc tidak berfungsi

78

Saya memiliki file satu baris .bashrcdi direktori home saya:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Tapi itu tidak membuat alias. Kenapa bisa begitu?

William Jockusch
sumber

Jawaban:

102

Di OSX, .bash_profiledigunakan sebagai ganti .bashrc.

Dan ya, .bash_profilefile tersebut harus berada di /Users/YourName/
(Dengan kata lain, ~/.bash_profile)

Sebagai contoh, /Users/Aaron/.bash_profile

Azz
sumber
11
Ini bukan jawaban yang tepat. Alias ​​tidak diwarisi, jadi, jika Anda hanya mendefinisikannya di .bash_profile, mereka tidak akan didefinisikan dalam shell non-login (mis. Ketika Anda menjalankan bash di dalam bash).
LaC
1
Atau seseorang dapat menggunakan bash_aliases yang memiliki efek yang sama dengan meletakkan alias di bashrc, tetapi lebih mudah dikelola: ss64.com/osx/syntax-bashrc.html
Atul Ingle
4
di .bash_profile saya, saya hanya menulis satu baris ke alias (semacam) bashrc ->source ~/.bashrc
Eric Hodonsky
86

.[bash_]profiledan .bashrcdapat digunakan pada OS X dan Linux. Yang pertama dimuat ketika shell adalah shell login; yang terakhir ketika tidak. Perbedaan sebenarnya adalah bahwa Linux menjalankan shell login ketika pengguna login ke sesi grafis, dan kemudian, ketika Anda membuka aplikasi terminal, shell tersebut adalah shell non-login; sedangkan OS X tidak menjalankan shell pada saat login grafis, dan ketika Anda menjalankan shell dari Terminal.app, itu adalah shell login.

Jika Anda ingin alias Anda berfungsi di shell login dan non-login (dan biasanya Anda lakukan), Anda harus meletakkannya di .bashrc dan source .bashrc di .bash_profile Anda, dengan baris seperti ini:

[ -r ~/.bashrc ] && source ~/.bashrc

Ini berlaku untuk sistem apa pun yang menggunakan bash.

LaC
sumber
15
Beri +1 dengan peringatan bahwa semua yang ada di .bashrc akan dijalankan lagi untuk sub-shells (dan subsub-, subsubsub-, dll), jadi misal PATH=$PATH:/my/private/binariesakan menyebabkan PATH mengasapi. Lihat ini untuk solusinya.
Gordon Davisson
2
Benar. Karena variabel instance yang diekspor diwarisi, saya hanya mengaturnya .profilesebagai ganti .bashrc.
LaC
1
@ LaC dapat Anda jelaskan _Sejak variabel yang diekspor contoh diwarisi, saya hanya mengaturnya di .profile_...?
sam
1
@sam, saya tidak tahu dari mana "instance" berasal. Saya hanya bermaksud "variabel yang diekspor". Sayangnya saya tidak dapat mengedit komentar itu.
LaC
2
@dinosaur: "-r" memeriksa apakah file dapat dibaca.
mhvelplund
7

Atau buat tautan sym bernama .bash_profile yang menunjuk ke .bashrc Anda

ln -s .bashrc .bash_profile
Barrett
sumber
2

Itu tidak alias karena .bash_profiledigunakan sebagai ganti .bashrcpada Mac OS X.

Jadi, Anda memiliki dua opsi:

  • Masukkan alias ke dalam ~/.bash_profile

  • Atau sumber Anda .bashrcdari Anda .bash_profiledengan menambahkan baris ini ke .bash_profile:

    . ~/.bashrc

Wuffers
sumber
1

Di Mac OS X Yosemite , jalankan perintah berikut:

vi ~/.profile

Kemudian tambahkan baris berikut:

source ~/.bashrc

Sekarang simpan dan tutup .profile, lalu buka jendela Terminal baru atau jalankan:

source ~/.profile

Lihat juga jawaban ini . Ini bekerja pada v10.10.3.

Ricardo
sumber
Ini sedikit lebih dari pengulangan jawaban dari empat tahun lalu.
G-Man Mengatakan 'Reinstate Monica'
Tentu, hanya eay yang mudah dibaca dan diterapkan. Ditambah sedikit kontribusi - karena file lain yang disebutkan tidak tersedia di OS Yosemite saya.
Ricardo