MinGW Bash profili


37

Windows 7'de MinGW kullanıyorum .bashrc. İçinde bazı takma adlar var. Dosya, MinGW'nin beni başlattığı ev klasörümde, bu yüzden de klasörün benim ev klasörüm olduğuna inanıyor. Klasörün içeriğini otomatik olarak yüklemez. bashTakma adı çalıştırmak için komutu çalıştırmam gerekiyor.

Bunu yeniden adlandırmayı denedim .bash_profile. Bu sadece işleri otomatik olarak yüklemediği ve bashmanuel olarak çalıştırdığımda yüklemediği için işleri daha da kötüleştirdi .

Bu sorunu nasıl düzeltebilirim?


Maalesef yol şu şekilde olmalı: C: ​​\ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Yanıtlar:


48

bashMuhtemelen bir giriş kabuğu olarak başlatılıyor, bu durumda .bashrcotomatik olarak okumuyor . Bunun yerine, okur .bash_profile. Gönderen Bash kılavuzda :

Yani, genellikle, `~ / .bash_profile 'satırınızı içerir

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

oturum açma işlemine özgü başlatmalardan sonra (veya öncesi).

Özetle, .bash_profilehomedir'inizde bir dosya oluşturun ve yukarıda belirtilen satırı ekleyin.

Eğer senin bashaslında olarak çağrılan oluyor sh, ardından kullanmak gerekir .profileyerine .bash_profile(Bash manuel yukarıdaki bağlantıya bölümünde "sh adıyla çağrılan" bölümüne bakınız).


1
Fikir için teşekkürler, yine de işe yaramadı. Soruda söylediğim gibi, takma komutları .bash_profile içine koymak hiç işe yaramıyor, bu yüzden okunmamış gibi görünüyor.
KurToMe

5
Bu bana tam olarak söylediğin şeyi yapma fikrini verdi. Bunun yerine .profile dosyasına koymak. İşe yarayan bazı nedenlerden dolayı (belki MinGW varsayılan olarak Bash'i kullanmaz veya çılgınca bir şeydir). Cevabınıza bu seçeneği eklerseniz, kabul edildi olarak işaretlerim.
KurToMe

1
Ah, sorumu düzelttiğim bir yazım hatası vardı, bunu soruda söylüyordum .bash_rc, ama demek istedim .bash_profile.
KurToMe

biraz daha kısa:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka

1
@KurToMe Durumunuzu kapsayacak şekilde düzenlendi.
jjlin

8

Windows XP kullanıyorum ve aynı problem vardı. NASIL Bir MSYS Oluşturma Ortamı Oluşturma'yı buldum .

Bu önemli çizgi:

Çalışma zamanı yapısını ve geçerli çalışma dizinini tanımlamaya yardımcı olmak için, aşağıdakiler ~/.profiledosyaya eklenebilir .

MinGW kabuğunda yarattım .profile:

cd ~
touch .profile

Notepad ++ ' ı Unix formatındaki bir metin dosyası olarak düzenlemek için kullandım .profileve giriş dizinine kaydettim.C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Sonra takma adımı ekledim ve kaydettim:

alias n='nano -w'

Sonra başlangıç ​​menümden MinGW Shell kısayolunu açtım ve hurra, işe yaradı! metin kaydırma olmadan nano .

Umarım bu sana yardımcı olur.


Söylediklerinize şaka yapmaz ... ~ kullanıcıların ana dizini ... anlamına gelir ... o zaman c: \ MinGW \ msys \ 1.0 \ home ... ifadeniz ... KULLANICILAR ana sayfa ...% userprofile% 'li pencerelerde ...
Eddie B

2

Benim için çalışacak .bash_profile dosyasını bulamadım (okunmuyordu), bu yüzden .profile yaklaşımını kullandım ve içine koydum:

exec bash

Bu benim şu anki kabuğumun yerini .bashrc'yi okuyan taze bir bash başlangıcıyla değiştiriyor.

Bir .profile kullanmanın sh girişinde bash kullanıldığını öne sürdüğünü düşünüyorum.


1

Benim için GIT yüklü MINGW için çalıştı: .bash_profile C:\Users\[user_name]

Bu aynı zamanda ~ 'nin kabuğa işaret ettiği dizindir (pwd).

Aynen böyle :)


0

@Koshmarr'ın çizgileri boyunca, ancak biraz farklı. Git-scm.com adresindenmingw64 indirilen My , başlangıçta yüklenir . Oysa benim ev sürücü (bulundu tarafından ) oldu . Bir koyun ve benim içine sürücüye ve her şey çalıştı./c/Users/[user-name]cd ~/h/.bashrc.bash_profile~

İçinde .bash_profile:

    source ~/.bashrc;

Sadece MINGW'nin evi nerede gördüğünü ve .bash_profileoraya koyduğunu anlayın .


0

MSYS Bash başlatma dosyaları nasıl ayarlanır

Windows işletim sisteminde, Bash (yani, profile, bash_profile, bashrc) tarafından kullanılan başlatma dosyalarına işaret etme şekliniz Linux işletim sistemine göre farklıdır.

Windows ve Linux işletim sistemi arasındaki fark, Bash dosya konumlarında ve dosya adlandırma kurallarında farklılığa yol açan dosya sistemi yapılarıdır.

MSYS Bash başlatma dosyaları (yani, profil, bash_profile ve bashrc) nasıl ayarlanır?

1) WINOS'ta, burada bulunan 'etc' klasörünü açın 'C: \ msys \ 1.0 \ etc \'. Not. 'etc' klasörünün içinde 'profile' bir dosya görmelisiniz.

2) Dosya uzantısı olmayan bir dosyayı (yani kaydetme türünü '.all dosyaları' olarak ayarladığınızda) '.bash_profile' ile 'C: \ msys \ 1.0 \ home \ USERNAME' olarak kaydedin. Not. Linux OS Bash kurulumunda beklediğiniz gibi dosya adı için önek olarak nokta vardır (örn. '.bash_profile')

2) Dosya uzantısı olmayan bir dosyayı (yani kaydetme türünü '.all dosyaları' olarak ayarladığınızda) '.bashrc' ile 'C: \ msys \ 1.0 \ home \ USERNAME' olarak kaydedin. Not. Linux OS Bash kurulumunda beklediğiniz gibi dosya adı için önek olarak nokta vardır (örn. '.bash_profile')

4) 'Profil' dosyasını bir metin düzenleyicide açın (yüce metin x iyidir) Not: 'Profil' dosyasının konumu 'C: \ msys \ 1.0 \ etc \'

'Profile' dosyasının içinde, dosyanın sonundaki metnin satırına kaydırın (yani, en altına kaydırın), geçerli dizini HOME olarak değiştirmek için Bash'i belirten bir test görmelisiniz (MSYS'de, HOME, 'profil' dosyası)

CD $HOME

5) 'CD $ HOME' metin satırının aşağıdaki kodu kopyalamasından önce - bu betiği 'profile' eklemek, MSYS bashına bash_profile # ---------------- komutunu çalıştırmasını söyler. -------------------------------------------------- --------- # modifiye 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) 'bash_profile' dosyasını bir metin editöründe ( Sublime Text x iyidir) ve dosyanın sonunu (dosyanın altında) açın.

7) Dosyanın sonuna aşağıdaki kodu kopyalayın - bu betiği '.bash_profile' içine eklemek Bash'e '.bashrc' komutunu çalıştırmasını söyleyecektir.

#---------------------------------------------------------------------------
#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) Tamam, şimdi 'profile' 'bash_profile' olup olmadığını ve 'bash_profile' '.bashrc' olup olmadığını görmek için '.bashrc' içine küçük bir komut dosyası yazalım.

8.1) Oluşturmak istediğiniz komut adını düşünün. Test yapmak için 't' kullanalım.

8.2) Bash terminalini açın ve 't' yazın. Bash 't: komut bulunamadı' yanıtını vermeli - eğer 't: komut bulunamadı' demiyorsa, komut adınız 'komut bulunamadı' diyene kadar 8.1 ve 8.2'yi tekrarlayın. BAD! 'E atanmış bir komut ismini diğer isimlendirmek istemezsiniz, bu yüzden' komut bulunamadı 'olmalı.

8.3) Tamam, 't' bana 't: komutu bulunamadı' verdi. Şimdi senaryoyu '.bashrc' içine yazalım.

8.4) '.bashrc' yazarken

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

8.5) '.bashrc' dosyasını 'C: \ msys \ 1.0 \ home \ USERNAME' içine kaydedin

9) Neredeyse orada. Şimdi Bash terminalini yeniden başlatın ve önceden açılmış Bash terminallerini kapattığınızdan emin olun.

10) 't' terminalini yazın. 'Başarılı test' yanıtını vermelidir. Değilse, kodun doğru bir şekilde yazıldığını dikkatlice kontrol edin (fiyatları kontrol ederek başlayın)

Bazı notlar 1) 'kaynak dosya adı' 'ile aynıdır. dosya adı'

2) "" çift tırnak, değişkenlerin içeriğiyle değiştirilmesine izin verir, tek tırnak

3) $ HOME / home / USERNAME, ~ is / home / USERNAME ile aynıdır.

4) Bir işlev her zaman takma ad yerine tercih edilir 2

Daha fazla ayrıntı için BASH referansına bakınız.

Ben Bash için yeniyim. Yani bunu en iyi şekilde yaptığımın garantisi yok.

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.