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?

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


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.


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

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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.