.bashrc tidak bersumber di iTerm + Mac OS X

62

Saya menggunakan iTerm di Mac OS X 10.6. Sepertinya ketika saya membuka iTerm, tidak .bashrcjuga .bash_profiletidak bersumber. Saya tahu karena alias yang ditentukan .bashrctidak disetel. Bagaimana cara memperbaiki?

Komputis
sumber
2
Apa yang terjadi ~/.bash_profilesedang dipanggil oleh bash terlebih dahulu, yang menghubungkan instruksi yang Anda miliki ~/.bashrc. Masalah ini dapat terjadi secara tak terduga jika program jahat menambahkan beberapa instruksi kepada Anda ~/.bash_profileketika sebelumnya file tersebut tidak ada, dan Anda telah menempatkan semua perintah bash Anda ~/.bashrc. Solusinya adalah dengan menghapus ~ / .bash_profile Anda, atau memiliki ~ / .bash_profile sumber ~ / .bashrc Anda. Ini dapat dilakukan dengan menambahkan perintah: source ~/.bashrcke ujung Anda ~/.bash_profiledan memulai ulang terminal.
Eric Leschinski

Jawaban:

53

Bash akan menghasilkan EITHER .bash_profile atau .bashrc, tergantung bagaimana namanya. Jika itu adalah shell login, Bash mencari ~ / .bash_profile, ~ / .bash_login, atau ~ / .profile, dalam urutan itu, dan sumber yang pertama ditemukan (dan hanya yang itu). Jika ini bukan shell login tetapi interaktif (seperti kebanyakan sesi terminal), Bash akan mencari ~ / .bashrc.

Sepertinya, iTerm mencari ~ / .bashrc. Jika dikonfigurasi untuk memulai sebagai shell login, ia akan mencari ~ / .bash_profile. Ini hampir pasti kesalahan dalam file konfigurasi daripada bahwa shell tidak mengambilnya.

Saya akan meletakkan garis di awal setiap file. Di bagian atas ~ / .bash_profile:

export BASH_CONF="bash_profile"

Dan di bagian atas ~ / .bashrc:

export BASH_CONF="bashrc"

Kemudian, buka iTerm dan ketik baru

$ echo $BASH_CONF

Itu akan mengonfirmasi file sedang bersumber dan Anda dapat melihat ke sintaks file.

brightlancer
sumber
2
Mengatur variabel lingkungan yang berbeda untuk setiap file sumber memungkinkan lebih banyak informasi, yaitu, jika lebih dari satu file berasal, Anda akan mengetahuinya, bukan yang terakhir (jika bukan urutan yang bersumber.)
kmarsh
Ini masih tidak memuat file .bashrc. Saya harus menambahkan sumber ~ / .bashrc ke iTerm dan Terminal Preferences saya. btw saya menggunakan Mac OS X 10.9.5.
Giant Elk
Saya baru saja menambahkan file profil. Dan itu secara otomatis berfungsi pada OS X 10.9.5 tanpa mengacaukan preferensi terminal Anda.
Giant Elk
1
Saya menemukan itu adalah shell login dengan masuk ke preferensi -> profil -> umum dan shell login dipilih di bawah perintah. Berlaku untuk MacOS El Capitan dan iTerm2 3.0.14
Aditya
Solusi di sini tidak bekerja untuk saya, tetapi saya menemukan solusinya. Pada awalnya, tidak ada bashrc dan tidak ada bash_profile. Jawaban di sini mengusulkan untuk membuat bashrc. Alih-alih membuat file bashrc, saya membuat bash_profile, dan berhasil. Sekarang saya perlu mengerti mengapa bashrc tidak dieksekusi dan bash_profile ya.
kalmanIsAGameChanger
68

Di iTerm2, tidak ada solusi yang bekerja untuk saya. Saya dapat membuatnya untuk membaca file .bashrc dengan benar dengan menambahkan perintah

source ~/.bashrc 

ke kolom Kirim teks saat mulai: di Pengaturan / Umum untuk profil iTerm saya.

masukkan deskripsi gambar di sini

Mark Struzinski
sumber
Apa yang terjadi ketika Anda melakukan apa yang disarankan jawaban yang diterima? Tidak ada output?
Daniel Beck
Baik. Saya tidak mendapat hasil, dan iTerm 2 baru saja memuat bash shell default tanpa ada alias saya.
Mark Struzinski
Jawaban itu terputus sampai sekarang - potongan kedua seharusnya masuk ke ~/.bashrc. Diedit itu.
Daniel Beck
Saya menggunakan ZSH dan mengalami masalah yang sama. Kecuali bahwa tidak ada file konfigurasi saya ada di tempat pertama dan harus dibuat. Saya menggunakan jawaban ini dan mengatur "Kirim teks saat mulai" namun, ketika saya memulai ulang ZSH membuatnya .zsh dan menimpa file saya, saya dapat menghapus "Kirim teks saat mulai" dan menambahkan konfigurasi saya ke file yang baru dibuat. Tidak yakin apakah ini membantu siapa pun
Arnolio
Saya pikir ini adalah masalah saya .. dan kemudian saya menyadari bahwa katalog rumah saya bukan folder tempat saya memulai .. jadi ketika saya memindahkan file .bash_profile saya ke lokasi lain dan saya pikir saya adalah ln -s (terhubung dengan itu dari katalog ~ (rumah) saya, saya sebenarnya menambahkan symlink di folder yang salah. Menambahkan ini di sini kalau-kalau membantu orang lain, yang akan pergi untuk jawaban ini.
Alisso
23

Saya hanya ingin tahu apakah Anda benar-benar menggunakan Bash? Mungkin Anda bisa menggunakan echo $SHELL, sangat mungkin Anda menggunakan zsh , sudahkah Anda menginstal on-my-zh ?

Sebenarnya saya mengalami masalah yang sama seperti Anda, saya memperbaikinya dengan mengkonfigurasi ~ / .zshrc sebagai gantinya ~ / .bash_profile untuk shell login atau ~ / .bashrc untuk shell non-login.

Mungkin Anda bisa mencobanya

AaronChen
sumber
1
Saran yang menarik, meskipun pertanyaan ini berusia 3 tahun dan memiliki jawaban yang diterima.
Tyson
12

Pada mesin 10,6 saya ~/.profilebersumber. Jadi source .bashrcentri masuk ~/.profileharus melakukan pekerjaan.

sebastiangeiger
sumber
Bekerja untuk saya di Mac OS El Capitan.
user674669
Pengalaman saya mengatakan Anda tidak ingin sumber satu file .bashx dari yang lain, mereka terpisah karena suatu alasan :) Jika Anda melakukan itu, maka ada sesuatu yang salah
Alexander Mills
@AlexanderMills Alasan file-file ini ada adalah karena Mac langsung merobeknya dari Unix. Tidak ada alasan mereka semua tidak boleh dimuat untuk pengguna.
RaisinBranCrunch
Anda bisa mendapatkan panggilan melingkar jika mereka memuat satu sama lain, masalahnya, cara terbaik untuk menghindari itu adalah membalik boolean dengan env var dan hanya memuat file lain jika boolean tidak disetel.
Alexander Mills
8

Memperbaiki mudah.

1. Buka ~/.zshrcfile Anda

2. Tambahkan baris berikut di akhir file.

source ~/.bash_profile
Manoj Shrestha
sumber
1
Cemerlang! Itu berhasil untuk saya. Tidak pernah terpikir oleh saya bahwa zsh mulai mengganggu setelah saya menginstal Oh-my-zh.
Cindy Conway
6

Pada mesin 10.9 saya ~ / .bash_profile bersumber. Jadi entri .bashrc sumber di ~ / .bash_profile harus melakukan pekerjaan itu.

Kit Ho
sumber
1

Masukkan definisi alias Anda di file profil bash, Anda harus membuat file tetapi akan bersumber secara otomatis. Saya membuat file terpisah yang disebut alias.configuration dan sumbernya di .bash_profile hanya karena saya memiliki pengguna lain yang ditentukan dan ingin memiliki set alias yang sama.


sumber
1
Sebenarnya tidak satu .bashrcpun .bash_profiletidak bersumber.
Computist
1

Menambahkan

set -x

ke awal /etc/profile. Ini memberi Anda account baris demi baris dari segala sesuatu yang akan dijalankan ketika bashdijalankan, termasuk file yang bersumber dari dalam /etc/profile, ~/.bash_profile, dll Ini sedikit menakutkan jika Anda tidak mengerti bashscripting sangat baik, tetapi Anda mungkin dapat melihat apakah ada kesalahan dalam file start-up, dan hasilnya akan berguna bagi seseorang yang mahir dalam bashmembantu Anda menemukan masalah Anda.

Anda dapat menghapus set -xgaris saat Anda selesai pemecahan masalah.

chepner
sumber
1

Pada 10.10 dan iTerm2 2.0, profil khusus

  • .bash_rc seharusnya berfungsi.
  • .bash_profile, coba "/ bin / bash --login" daripada "/ bin / bash"
zmx
sumber
Saya memilih jawaban ini karena tampaknya menjadi satu-satunya yang mengakui bahwa di OS X, pada beberapa titik, bash akan sumber ".bash_rc" bukan ".bashrc". Saya hanya datang ke sini karena saya berusaha mencari tahu mengapa (dan saya masih tidak tahu).
Marnix A. van Ammers
0

Di iTerm2, pastikan Anda menggunakan "shell login" alih-alih perintah kustom termasuk "login", yang tidak melakukan apa yang Anda harapkan.

George
sumber
Apa yang sebenarnya dilakukan perintah iTerm2?
studgeek
0

Lakukan perubahan berikut dan iTerm akan sumber bashrc

ITerm> Preferensi> Umum> [x] Perintah: / bin / bash

jake
sumber
0

Masalah dapat diperbaiki dengan menambahkan baris di bawah ini ke / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"

Bob Gu
sumber
-1

Saya menggabungkan solusi pasangan untuk bekerja seperti yang diharapkan.

.bash_profile sumber dan jalankan di zsh.

Preferences -> Profiles -> General .

Pilih Command di bawah Command.
Dan tambahkan di kotak teks /bin/bash --login.

Kemudian di .bash_profile tambahkan baris /bin/zsh --login

Itu dia.

muhammed basil
sumber
(1) Apa? (2) Jika Anda bashselalu berlari zsh, bukan itu yang diharapkan siapa pun.
Scott
Jika saya mengatur / bin / bash --login, itu tidak menyediakan fitur zsh. Kemudian Jika saya mengubahnya menjadi loginshell dalam preferensi, itu tidak membaca .bash_profile. Setiap kali saya harus berjalan source ~/.bash_profilesecara manual. @Scott Setelah melakukan hal-hal di atas, saya memiliki zsh dengan cara yang diperlukan.
muhammed basil
(1) Maksud saya adalah zshapa yang Anda inginkan , tetapi tidak diharuskan atau diminta oleh pertanyaan ini, yang ditandai [bash] dan tidak mengatakan apa-apa zsh. (2) Jika Anda mendefinisikan alias dan fungsi shell dan mengatur variabel (tanpa mengekspornya) di Anda .bashrcdan / .bash_profile,, apakah tersedia untuk Anda di zshshell Anda ?
Scott