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.