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?
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.
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.
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.
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.
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.
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.
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.
(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 ?
~/.bash_profile
sedang 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_profile
ketika 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 ~/.bashrc
ke ujung Anda~/.bash_profile
dan memulai ulang terminal.Jawaban:
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:
Dan di bagian atas ~ / .bashrc:
Kemudian, buka iTerm dan ketik baru
Itu akan mengonfirmasi file sedang bersumber dan Anda dapat melihat ke sintaks file.
sumber
Di iTerm2, tidak ada solusi yang bekerja untuk saya. Saya dapat membuatnya untuk membaca file .bashrc dengan benar dengan menambahkan perintah
ke kolom Kirim teks saat mulai: di Pengaturan / Umum untuk profil iTerm saya.
sumber
~/.bashrc
. Diedit itu.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
sumber
Pada mesin 10,6 saya
~/.profile
bersumber. Jadisource .bashrc
entri masuk~/.profile
harus melakukan pekerjaan.sumber
Memperbaiki mudah.
1. Buka
~/.zshrc
file Anda2. Tambahkan baris berikut di akhir file.
sumber
Pada mesin 10.9 saya ~ / .bash_profile bersumber. Jadi entri .bashrc sumber di ~ / .bash_profile harus melakukan pekerjaan itu.
sumber
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
.bashrc
pun.bash_profile
tidak bersumber.Menambahkan
ke awal
/etc/profile
. Ini memberi Anda account baris demi baris dari segala sesuatu yang akan dijalankan ketikabash
dijalankan, termasuk file yang bersumber dari dalam/etc/profile
,~/.bash_profile
, dll Ini sedikit menakutkan jika Anda tidak mengertibash
scripting sangat baik, tetapi Anda mungkin dapat melihat apakah ada kesalahan dalam file start-up, dan hasilnya akan berguna bagi seseorang yang mahir dalambash
membantu Anda menemukan masalah Anda.Anda dapat menghapus
set -x
garis saat Anda selesai pemecahan masalah.sumber
Pada 10.10 dan iTerm2 2.0, profil khusus
sumber
Di iTerm2, pastikan Anda menggunakan "shell login" alih-alih perintah kustom termasuk "login", yang tidak melakukan apa yang Anda harapkan.
sumber
Lakukan perubahan berikut dan iTerm akan sumber bashrc
ITerm> Preferensi> Umum> [x] Perintah: / bin / bash
sumber
Masalah dapat diperbaiki dengan menambahkan baris di bawah ini ke / etc / bashrc
sumber
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.
sumber
bash
selalu berlarizsh
, bukan itu yang diharapkan siapa pun.source ~/.bash_profile
secara manual. @Scott Setelah melakukan hal-hal di atas, saya memiliki zsh dengan cara yang diperlukan.zsh
apa yang Anda inginkan , tetapi tidak diharuskan atau diminta oleh pertanyaan ini, yang ditandai [bash] dan tidak mengatakan apa-apazsh
. (2) Jika Anda mendefinisikan alias dan fungsi shell dan mengatur variabel (tanpa mengekspornya) di Anda.bashrc
dan /.bash_profile
,, apakah tersedia untuk Anda dizsh
shell Anda ?