Profil MinGW Bash


36

Używam MinGW na Windows 7. Mam .bashrctrochę aliasów. Plik znajduje się w moim katalogu domowym, w którym MinGW mnie uruchamia, więc wierzy również, że ten folder jest moim folderem domowym. Nie ładuje automatycznie zawartości folderu. Muszę uruchomić bashpolecenie, aby uruchomić aliasy.

Próbowałem zmienić nazwę na .bash_profile. To tylko pogorszyło sytuację, ponieważ nie ładowało się automatycznie, a także nie ładowało się, gdy działałem bashręcznie.

Jak mogę rozwiązać ten problem?


Niestety ścieżka powinna być następująca: C: \ MinGW \ msys \ 1.0 \ home \ Twoja_nazwa_użytkownika_Here \ .profile

Odpowiedzi:


47

bashprawdopodobnie zaczyna się jako powłoka logowania, w którym to przypadku nie czyta się .bashrcautomatycznie. Zamiast tego czyta .bash_profile. Z podręcznika Bash :

Zwykle twój plik ~ / .bash_profile zawiera wiersz

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

po (lub przed) inicjalizacjach związanych z logowaniem.

Podsumowując, utwórz .bash_profileplik w swoim katalogu głównym i dodaj wiersz cytowany powyżej.

Jeśli bashfaktycznie wywołujesz jako sh, musisz użyć .profilezamiast tego .bash_profile(zobacz sekcję „Wywołane z nazwą sh” linku do instrukcji Bash powyżej).


1
Dzięki za pomysł, jednak nie zadziałał. Jak powiedziałem w pytaniu, umieszczenie poleceń aliasu w .bash_profile w ogóle nie działa, więc wygląda na to, że nie można go odczytać.
KurToMe

5
To dało mi pomysł, aby zrobić dokładnie to, co powiedziałeś, z wyjątkiem umieszczenia go w pliku .profile. Z jakiegoś powodu, który zadziałał (być może MinGW domyślnie nie używa Basha lub czegoś szalonego). Jeśli dodasz tę opcję do swojej odpowiedzi, oznaczę ją jako zaakceptowaną.
KurToMe

1
Ach, w moim pytaniu była literówka, którą naprawiłem, nazwałem ją .bash_rcw pytaniu, ale miałem na myśli .bash_profile.
KurToMe

nieco bardziej zwięzłe:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka

1
@KurToMe Edytowałem, aby opisać twoją sytuację.
jjlin

8

Korzystam z systemu Windows XP i miałem ten sam problem. Znalazłem HOWTO Tworzenie środowiska kompilacji MSYS .

Oto ważna linia:

Aby pomóc zidentyfikować kompilację środowiska wykonawczego i bieżący katalog roboczy, do ~/.profilepliku można dodać następujące elementy .

W powłoce MinGW stworzyłem .profile:

cd ~
touch .profile

Użyłem Notepad ++ do edycji jako plik tekstowy w formacie Unix o nazwie .profilei zapisałem go w moim katalogu domowym,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Następnie dodałem swój alias i zapisałem:

alias n='nano -w'

Następnie uruchomiłem skrót MinGW Shell z mojego menu startowego i hurra, zadziałało! nano bez zawijania tekstu.

Mam nadzieję, że to Ci pomoże.


To, co mówisz, nie jive ... ~ oznacza katalog domowy użytkowników ... wtedy twoje stwierdzenie c: \ MinGW \ msys \ 1.0 \ home ... to nie ma żadnego sensu tylda jest odniesieniem do dom UŻYTKOWNIKÓW ... w systemie Windows, który% userprofile% ...
Eddie B

2

Nie znalazłem .bash_profile do pracy dla mnie (nie był czytany), więc podjąłem podejście .profile i umieściłem w nim:

exec bash

To zastępuje moją obecną powłokę nowym początkiem bash, który odczytuje mój .bashrc

Myślę, że użycie .profile sugeruje, że sh jest używany podczas logowania, a nie bash.


1

Dla mnie dla MINGW zainstalowanego z GIT działało: włożono .bash_profile C:\Users\[user_name]

Jest to także katalog, w którym ~ wskazuje w powłoce (pwd).

Właśnie tak :)


0

Wzdłuż linii @Koshmarr, ale nieco inny. Mój mingw64pobrany z git-scm.com załadowałby się /c/Users/[user-name]przy starcie. Ale mój domowy dysk (znaleziony przez cd ~) był w środku /h/. Włożyłem .bashrci .bash_profiledo ~napędu i wszystko działało.

W .bash_profile:

    source ~/.bashrc;

Po prostu dowiedz się, gdzie MINGW uważa dom i umieść go .bash_profiletam.


0

Jak skonfigurować pliki inicjujące MSYS Bash

W systemie operacyjnym Windows sposób wskazywania plików inicjujących używanych przez Bash (tj. Profil, profil_bash, bashrc) jest inny niż w systemie Linux.

Różnica między systemem operacyjnym Windows a Linux polega na ich strukturze systemu plików, co prowadzi do różnic w lokalizacji plików Bash i konwencjach nazewnictwa plików.

Jak skonfigurować pliki inicjujące MSYS Bash (tj. Profil, profil_bash i bashrc)

1) W systemie WINOS otwórz folder „etc” znajdujący się tutaj „C: \ msys \ 1.0 \ etc \”. Uwaga. powinieneś zobaczyć plik „profil” w folderze „etc”.

2) Zapisz plik bez rozszerzenia pliku (tzn. Podczas zapisywania ustaw typ zapisu jako „.all files”) o nazwie pliku „.bash_profile” na „C: \ msys \ 1.0 \ home \ USERNAME”. Uwaga. przed nazwą pliku znajduje się kropka (np. „.bash_profile”), jak można się spodziewać po instalacji Bash w systemie Linux OS

2) Zapisz plik bez rozszerzenia pliku (tzn. Podczas zapisywania ustaw typ zapisu jako „.all files”) o nazwie pliku „.bashrc” na „C: \ msys \ 1.0 \ home \ USERNAME”. Uwaga. przed nazwą pliku znajduje się kropka (np. „.bash_profile”), jak można się spodziewać po instalacji Bash w systemie Linux OS

4) Otwórz plik „profilu” w edytorze tekstu (wysublimowany tekst x jest dobry) Uwaga: Lokalizacja pliku „profilu” to „C: \ msys \ 1.0 \ etc \”

W pliku „profilu” przewiń do wiersza tekstu na końcu pliku (tj. Przewiń w dół), powinieneś zobaczyć linię testu wskazującą, że Bash zmienił swój bieżący katalog na HOME (w MSYS, HOME jest zdefiniowane w plik „profilu”)

CD $HOME

5) Przed wierszem z tekstem „CD $ HOME” skopiuj następujący kod - dodanie tego skryptu w „profilu” poinformuje MSYS bash o uruchomieniu pliku bash_profile # ---------------- -------------------------------------------------- --------- # zmodyfikowany POCZĄTEK

# 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) Otwórz plik „bash_profile” w edytorze tekstów ( Sublime Text x jest dobry) i koniec pliku (na dole pliku)

7) Skopiuj następujący kod na końcu pliku - dodanie tego skryptu w pliku „.bash_profile” powie Bashowi uruchomienie „.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, teraz napiszmy mały skrypt wewnątrz „.bashrc”, aby sprawdzić, czy „profil” wywołuje „bash_profile” i czy „bash_profile” wywołuje „.bashrc”.

8.1) Pomyśl o nazwie polecenia, które chcesz utworzyć. Użyjmy słowa „t”, aby oznaczać test

8.2) Otwórz terminal Bash i wpisz „t”. Bash powinien odpowiedzieć „t: polecenie nie znaleziono” - jeśli nie mówi „t: polecenie nie znaleziono”, powtarzaj 8.1 i 8.2, dopóki nazwa polecenia nie powie „polecenie nie znaleziono”. Nie chcesz aliasu nazwy polecenia przypisanej do bash BAD !, więc musi to być „polecenie nie znaleziono”

8.3) OK, „t” dał mi „t: polecenie nie znaleziono”. Teraz napiszmy skrypt do „.bashrc”

8.4) Pisz „.bashrc”

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

8.5) Zapisz plik „.bashrc” w „C: \ msys \ 1.0 \ home \ NAZWA UŻYTKOWNIKA”

9) Prawie tam. Teraz uruchom ponownie terminal Bash i upewnij się, że zamknąłeś wszystkie wcześniej otwarte terminale Bash

10) Wpisz terminal „t”. Powinien odpowiedzieć „zdany test”. Jeśli nie, dokładnie sprawdź, czy kod został poprawnie napisany (zacznij od sprawdzenia cudzysłowów)

Niektóre uwagi 1) „nazwa pliku źródłowego” jest taka sama jak „. Nazwa pliku'

2) Podwójne cudzysłowy pozwalają na zastąpienie zmiennych zawartością pojedynczych cudzysłowów

3) $ HOME to / home / USERNAME tak samo jak ~ is / home / USERNAME

4) Funkcja jest zawsze preferowana nad aliasem 2

Aby uzyskać więcej informacji, patrz dokumentacja BASH

Jestem nowy w Bash. Więc nie ma gwarancji, że zrobiłem to najlepiej.

Powodzenia!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.