Profil Bash MinGW

37

Saya menggunakan MinGW di Windows 7. Saya memiliki .bashrcbeberapa alias di dalamnya. File tersebut ada di folder rumah saya yang merupakan tempat MinGW memulai saya, jadi ia juga percaya bahwa folder tersebut adalah folder rumah saya. Itu tidak memuat konten folder secara otomatis. Saya harus menjalankan bashperintah untuk membuat alias berfungsi.

Saya sudah mencoba mengubah nama menjadi .bash_profile. Ini hanya memperburuk keadaan karena tidak memuat secara otomatis dan juga tidak memuat ketika saya berlari bashsecara manual.

Bagaimana saya bisa memperbaiki masalah ini?

KurToMe
sumber
Maaf jalurnya seharusnya: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Jawaban:

48

bashmungkin memulai sebagai shell login, dalam hal ini tidak dibaca .bashrcsecara otomatis. Sebaliknya, bunyinya .bash_profile. Dari manual Bash :

Jadi, biasanya, `~ / .bash_profile 'Anda berisi baris

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

setelah (atau sebelum) inisialisasi khusus login.

Jadi secara ringkas, buat .bash_profilefile di homedir Anda, dan tambahkan baris yang dikutip di atas.

Jika Anda bashbenar-benar dipanggil sebagai sh, maka Anda harus menggunakan .profilealih-alih .bash_profile(lihat bagian "Diminta dengan nama" dari tautan manual Bash di atas).

jjlin
sumber
1
Terima kasih atas idenya, tidak berhasil. Seperti yang saya katakan di pertanyaan, menempatkan perintah alias di .bash_profile tidak berfungsi sama sekali, jadi sepertinya itu tidak bisa dibaca.
KurToMe
5
Ini memberi saya ide untuk melakukan persis apa yang Anda katakan kecuali untuk meletakkannya di file profil sebagai gantinya. Untuk beberapa alasan yang berhasil (mungkin MinGW tidak menggunakan Bash secara default atau sesuatu yang gila). Jika Anda menambahkan opsi ini ke jawaban Anda, saya akan menandainya sebagai diterima.
KurToMe
1
Ah, ada kesalahan ketik dalam pertanyaan saya yang saya perbaiki, saya menyebutnya .bash_rcdalam pertanyaan, tapi maksud saya .bash_profile.
KurToMe
agak lebih singkat:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
1
@ KurToMe Saya diedit untuk menutupi situasi Anda.
jjlin
8

Saya menjalankan Windows XP dan memiliki masalah yang sama. Saya menemukan HOWTO Create a MSYS Build Environment .

Inilah garis yang penting:

Untuk membantu mengidentifikasi runtime build dan direktori kerja saat ini, berikut ini dapat ditambahkan ke ~/.profilefile.

Di shell MinGW, saya membuat .profile:

cd ~
touch .profile

Saya menggunakan Notepad ++ untuk mengeditnya sebagai file teks format Unix bernama .profiledan menyimpannya di direktori rumah saya,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Lalu saya menambahkan alias saya dan menyimpan:

alias n='nano -w'

Lalu saya menyalakan pintasan MinGW Shell dari menu mulai saya dan hore, itu berhasil! nano tanpa pembungkus teks.

Saya harap ini membantu Anda.

Bryan
sumber
Apa yang Anda katakan tidak hilang ... ~ berarti direktori home pengguna ... lalu pernyataan Anda c: \ MinGW \ msys \ 1.0 \ home ... itu tidak masuk akal karena tilde adalah referensi ke rumah PENGGUNA ... pada windows yang% userprofile% ...
Eddie B
2

Saya tidak menemukan .bash_profile berfungsi untuk saya (tidak dibaca), jadi saya mengambil pendekatan .profile dan memasukkannya:

exec bash

Ini menggantikan shell saya saat ini dengan awal baru bash, yang membaca .bashrc saya

Saya berpikir bahwa menggunakan .profile menunjukkan bahwa sh digunakan saat login, bukan bash.

Paul Munsey
sumber
1

Bagi saya untuk MINGW terinstal dengan GIT, bekerja: .bash_profile dimasukkan C:\Users\[user_name]

Ini juga direktori tempat ~ menunjuk ke dalam shell (pwd).

Seperti itu :)

Koshmaar
sumber
0

Di sepanjang baris @Koshmarr, tetapi sedikit berbeda. My mingw64, yang diunduh dari git-scm.com , akan dimuat /c/Users/[user-name]saat startup. Namun perjalanan pulang saya (ditemukan oleh cd ~) berada di /h/. Saya memasukkan .bashrcdan .bash_profileke ~drive saya dan semuanya bekerja.

Dalam .bash_profile:

    source ~/.bashrc;

Cari tahu di mana MINGW menganggap rumah dan menempatkan di .bash_profilesana.

Bryan
sumber
0

Cara mengatur file inisialisasi MSYS Bash

Di OS Windows, cara Anda menunjuk ke file inisialisasi yang digunakan oleh Bash (yaitu, profil, bash_profile, bashrc) berbeda dibandingkan dengan OS Linux.

Perbedaan antara OS Windows dan Linux adalah struktur sistem file mereka, yang mengarah pada perbedaan lokasi file Bash dan konvensi penamaan file.

Cara mengatur file inisialisasi MSYS Bash (yaitu, profil, bash_profile, dan bashrc)

1) Dalam WINOS, buka folder 'etc' yang terletak di sini 'C: \ msys \ 1.0 \ etc \'. Catatan. Anda akan melihat file 'profil' di dalam folder 'dll'.

2) Simpan file tanpa ekstensi file (mis., Ketika Anda menyimpan, atur set save as type menjadi '.all files') dengan nama file '.bash_profile' ke 'C: \ msys \ 1.0 \ home \ USERNAME'. Catatan. ada dot sebagai awalan untuk nama file (mis. '.bash_profile') seperti yang Anda harapkan di Linux OS Bash setup

2) Simpan file tanpa ekstensi file (yaitu, ketika Anda menyimpan, atur save as ketik menjadi '.all files') dengan nama file '.bashrc' ke 'C: \ msys \ 1.0 \ home \ USERNAME'. Catatan. ada dot sebagai awalan untuk nama file (mis. '.bash_profile') seperti yang Anda harapkan di Linux OS Bash setup

4) Buka file 'profil' dalam editor teks (teks luhur x bagus) Catatan: Lokasi file 'profil' adalah 'C: \ msys \ 1.0 \ etc \'

Di dalam file 'profil', gulir ke baris teks di akhir file (yaitu, gulir ke bawah), Anda akan melihat sebuah baris tes yang menunjukkan Bash untuk mengubah direktori saat ini menjadi HOME (Dalam MSYS, HOME seperti yang didefinisikan dalam file 'profil')

CD $HOME

5) Sebelum baris dengan teks 'CD $ HOME' salin kode berikut - menambahkan skrip ini dalam 'profil' akan memberi tahu MSYS bash untuk menjalankan bash_profile # ---------------- -------------------------------------------------- --------- #modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
echo '[i] INFO loading personal environment variables and startup   programs.... '
BASHRC="$HOME/.bash_profile"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END
#---------------------------------------------------------------------------

6) Buka file 'bash_profile' dalam editor teks ( Sublime Text x baik) dan akhir file (di bagian bawah file)

7) Salin kode berikut di akhir file - menambahkan skrip ini dalam '.bash_profile' akan memberi tahu Bash untuk menjalankan '.bashrc'

#---------------------------------------------------------------------------
#modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
BASHRC="$HOME/.bashrc"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END

# ------------------------------------------------- --------------------------

8) OK, sekarang mari kita menulis skrip kecil di dalam '.bashrc' untuk melihat apakah 'profil' memanggil 'bash_profile' dan jika 'bash_profile' memanggil '.bashrc'.

8.1) Pikirkan nama perintah yang ingin Anda buat. Mari kita gunakan 't' untuk menguji

8.2) Buka terminal Bash dan ketik 't'. Bash harus menjawab 't: perintah tidak ditemukan' - jika tidak mengatakan 't: perintah tidak ditemukan' maka ulangi 8.1 dan 8.2 sampai nama perintah Anda mengatakan 'perintah tidak ditemukan'. Anda tidak ingin alias nama perintah yang ditugaskan ke bash BAD !, jadi harus 'perintah tidak ditemukan'

8.3) OK, 't' memberi saya 't: perintah tidak ditemukan'. Sekarang mari kita menulis skrip ke '.bashrc'

8.4) Dalam tulisan '.bashrc'

# Use double quotes or bash will not write it
alias t="echo passed test"

8.5) Simpan file '.bashrc' di 'C: \ msys \ 1.0 \ home \ USERNAME'

9) Hampir sampai. Sekarang restart terminal Bash, dan pastikan untuk menutup terminal Bash yang sebelumnya dibuka

10) Ketikkan terminal 't'. Itu harus menjawab 'lulus ujian'. Jika tidak, hati-hati periksa kode yang ditulis dengan benar (mulailah dengan memeriksa penawaran)

Beberapa catatan 1) 'nama file sumber' sama dengan '. nama file'

2) "" tanda kutip ganda memungkinkan variabel untuk diganti dengan isinya tanda kutip tunggal tidak

3) $ HOME adalah / home / USERNAME sama dengan ~ is / home / USERNAME

4) Suatu fungsi selalu lebih disukai daripada alias 2

Untuk detail lebih lanjut lihat referensi BASH

Saya baru mengenal Bash. Jadi tidak ada jaminan saya melakukan ini dengan cara terbaik.

Semoga berhasil!

Atom
sumber