.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?


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.


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


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


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.


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

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.


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.


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.


1

Pada 10.10 dan iTerm2 2.0, profil khusus

  • .bash_rc seharusnya berfungsi.
  • .bash_profile, coba "/ bin / bash --login" daripada "/ bin / bash"

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.


Apa yang sebenarnya dilakukan perintah iTerm2?
studgeek

0

Lakukan perubahan berikut dan iTerm akan sumber bashrc

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


0

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

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


-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.


(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
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.