Cara memperbaiki Terminal yang tidak memuat ~ / .bashrc pada OS X Lion [ditutup]


176

Setiap kali saya membuka tab baru di Terminal menggunakan Cmd+ T, itu membuka bash di direktori yang sama, seperti tab sebelumnya. Ini berfungsi dengan baik ketika saya berada di ~direktori, tetapi jika saya berada di tempat lain, saya mendapatkan kesalahan saat memuat.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

Sepertinya .bashrcdimuat melalui jalur relatif dan tidak absolut, karena jika saya lakukan source ~/.bashrc, semuanya bekerja dengan lancar.

bashrc dimuat

Saya pikir ini adalah masalah terkait OS X Lion, karena sebelum upgrade dari Snow Leopard, saya tidak memiliki masalah yang sama. Tapi itu mungkin disebabkan oleh Terminal selalu terbuka di ~, saya tidak ingat jika mencoba membuka direktori yang sama.

Namun pertanyaannya tetap sama, bagaimana saya bisa membuat Terminal memuat ~/.bashrcmelalui jalur absolut, dan bukan relatif?


1
pertanyaan ini harus dipindahkan ke apple.SE (jika mungkin?), tidak ditutup.
— Sparr

@Parr Saya sepenuhnya setuju dengan Anda tetapi moderator hanya memindahkan pertanyaan yang lebih baru bukan yang lebih tua. Lihat diskusi di sini
— рüффп

Jawaban:


357

Terminal membuka shell login. Ini berarti, ~/.bash_profileakan dieksekusi, ~/.bashrcbukan.

Solusi pada kebanyakan sistem adalah "membutuhkan" ~/.bashrcdi ~/.bash_profile: cukup taruh cuplikan ini di ~/.bash_profile:

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

8
Adakah yang bisa menjelaskan apa yang [[ -s /file/path ]]dilakukannya? Mencoba ke Google untuk penjelasan tidak terlalu mudah.
— Shane

18
From man bash: -s file True jika file ada dan memiliki ukuran lebih besar dari nol.
— ckruse

1
"Terminal membuka shell login" - apa tipe lain dari shell? Di mana saya dapat menemukan lebih banyak dokumentasi tentangnya?
— dknight

4
Ada yang disebut "shell interaktif" dan "shell login". Manual bash Anda ( man bash) membicarakannya dan menjelaskannya, bab INVOCATION (hanya mencari INVOCATIONsetelah menelepon man bashdengan mengetik /INVOCATION)
— ckruse

3
Saya gagal melihat bagaimana pertanyaan yang berkaitan dengan situasi eksekusi kode, diselesaikan dengan satu baris kode, adalah "di luar topik" ke situs pertanyaan pemrograman.
— Kheldar

26

Mengganti nama .bashrcmenjadi .profile(atau menautkan yang terakhir dengan yang pertama) juga harus melakukan trik. Lihat di sini .


Atau Anda dapat menghubungkannya: cd && ln -s ./.bashrc ./.profilePerhatikan bahwa symlink sensitif terhadap path file, saya percaya bahwa menggunakan sintaks di atas berfungsi, tetapi untuk memastikan Anda dapat menggunakan path absolut dalam kasus apa pun.
— Steve Benner

1
Uh, tidak? File-file ini memiliki tujuan berbeda. Jika Anda memiliki sintaks Bash di dalamnya .profileAnda akan mematahkan reguler sh.
— tripleee

14

Saya memiliki yang berikut ini di ~/.bash_profile:

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

Jika .bashrcbukan ~/.bashrc, saya akan melihat gejala yang sama yang Anda lihat.

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.