Profil MinGW Bash

37

J'utilise MinGW sur Windows 7. J'ai un .bashrcavec quelques alias dedans. Le fichier se trouve dans mon dossier personnel, c'est-à-dire l'endroit où MinGW commence, alors il croit également que le dossier est mon dossier personnel. Il ne charge pas le contenu du dossier automatiquement. Je dois exécuter la bashcommande pour que les alias fonctionnent.

J'ai essayé de le renommer .bash_profile. Cela n'a fait qu'empirer les choses, car il ne se chargeait pas automatiquement et lorsque je fonctionnais bashmanuellement.

Comment puis-je résoudre ce problème?

KurToMe
la source
Désolé, le chemin aurait dû être: C: \ MinGW \ msys \ 1.0 \ home \ Votre_Nom_utilisateur_Here \

Réponses:

48

bashcommence probablement comme un shell de connexion, auquel cas il ne lit pas .bashrcautomatiquement. , Il lit à la place .bash_profile. Du manuel de Bash :

Donc, généralement, votre `~ / .bash_profile 'contient la ligne

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

après (ou avant) toute initialisation spécifique à la connexion.

Donc, en résumé, créez un .bash_profilefichier dans votre répertoire personnel et ajoutez la ligne citée ci-dessus.

Si votre bashest en train d'être invoqué en tant que sh, alors vous devrez utiliser à la .profileplace de .bash_profile(voir la section "Invoquée avec le nom sh" du lien du manuel de Bash ci-dessus).

jjlin
la source
1
Merci pour l'idée, ça n'a pas marché. Comme je l'ai dit dans la question, l'insertion des commandes alias dans .bash_profile ne fonctionne pas du tout. Il semble donc que cela ne soit pas lu.
KurToMe
5
Cela m’a donné l’idée de faire exactement ce que vous avez dit sauf de le placer dans le fichier .profile à la place. Pour une raison quelconque qui a fonctionné (peut-être que MinGW n'utilise pas Bash par défaut ou quelque chose de fou). Si vous ajoutez cette option à votre réponse, je la marquerai comme acceptée.
KurToMe
1
Ah, il y avait une faute de frappe dans ma question que j'ai corrigée, je l'appelais .bash_rcdans la question, mais je voulais dire .bash_profile.
KurToMe
un peu plus laconique:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
1
@KurToMe J'ai édité pour couvrir votre situation.
Jjlin
8

J'utilise Windows XP et j'ai eu le même problème. J'ai trouvé le HOWTO Créer un environnement de construction MSYS .

C'est la ligne importante:

Pour aider à identifier la compilation d'exécution et le répertoire de travail actuel, les éléments suivants peuvent être ajoutés au ~/.profilefichier.

Dans le shell MinGW, j'ai créé .profile:

cd ~
touch .profile

J'ai utilisé Notepad ++ pour le modifier en tant que fichier texte au format Unix nommé .profileet sauvegardé dans mon répertoire personnel,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Puis j'ai ajouté mon alias et enregistré:

alias n='nano -w'

Ensuite, j’ai tiré le raccourci MinGW Shell de mon menu de démarrage et bravo, cela a fonctionné! nano sans habillage du texte.

J'espère que ceci vous aide.

Bryan
la source
Ce que vous dites ne jive pas ... ~ signifie le répertoire de base des utilisateurs ... alors votre déclaration c: \ MinGW \ msys \ 1.0 \ home ... cela n'a aucun sens que le tilde soit une référence à les utilisateurs à la maison ... sur les fenêtres que% userprofile% ...
Eddie B
2

Je n'ai pas trouvé le fichier .bash_profile (ce n'était pas en train d'être lu), alors j'ai choisi l'approche .profile et y ai inséré:

exec bash

Ceci remplace mon shell actuel par un nouveau départ de bash, qui lit mon .bashrc

Je pense que l'utilisation d'un fichier .profile suggère que sh est utilisé lors de la connexion, pas bash.

Paul Munsey
la source
1

Pour moi pour MINGW installé avec GIT, a travaillé: .bash_profile mis en C:\Users\[user_name]

C'est aussi le répertoire où ~ pointe vers shell (pwd).

Juste comme ça :)

Koshmaar
la source
0

Dans le sens de @Koshmarr, mais légèrement différent. Mon mingw64, téléchargé à partir de git-scm.com , se chargerait /c/Users/[user-name]au démarrage. Pourtant, mon domicile (trouvé par cd ~) était dans /h/. J'ai mis un .bashrcet .bash_profiledans mon ~lecteur et tout a fonctionné.

Dans .bash_profile:

    source ~/.bashrc;

Déterminez simplement où MINGW considère la maison et mettez le .bash_profilelà.

Bryan
la source
0

Comment configurer les fichiers d'initialisation MSYS Bash

Dans le système d'exploitation Windows, la manière dont vous pointez les fichiers d'initialisation utilisés par Bash (profil, bash_profile, bashrc) diffère de celle du système d'exploitation Linux.

La différence entre le système d'exploitation Windows et le système d'exploitation Linux réside dans la structure de leur système de fichiers, ce qui entraîne des différences quant aux emplacements des fichiers Bash et aux conventions de dénomination des fichiers.

Comment configurer les fichiers d'initialisation MSYS Bash (c'est-à-dire profile, bash_profile et bashrc)

1) Sous WINOS, ouvrez le dossier "etc" situé ici "C: \ msys \ 1.0 \ etc \". Remarque. vous devriez voir un fichier 'profil' dans le dossier 'etc'.

2) Enregistrez un fichier sans extension de fichier (c.-à-d. Lorsque vous enregistrez, définissez le type de fichier à '.all files') avec le nom de fichier '.bash_profile' dans 'C: \ msys \ 1.0 \ home \ USERNAME'. Remarque. il y a un point comme préfixe pour le nom du fichier (par exemple, '.bash_profile') comme on peut s'y attendre dans la configuration Linux OS Bash

2) Enregistrez un fichier sans extension de fichier (c.-à-d. Lorsque vous enregistrez, définissez le type de fichier à '.all files') avec le nom de fichier '.bashrc' dans 'C: \ msys \ 1.0 \ home \ USERNAME'. Remarque. il y a un point comme préfixe pour le nom du fichier (par exemple, '.bash_profile') comme on peut s'y attendre dans la configuration Linux OS Bash

4) Ouvrez le fichier 'profile' dans un éditeur de texte (sublime text x c'est bien). Remarque: l'emplacement du fichier 'profile' est 'C: \ msys \ 1.0 \ etc \'.

Dans le fichier 'profile', faites défiler jusqu'à la ligne de texte située à la fin du fichier (c.-à-d. Défilez vers le bas). Vous devriez voir une ligne testée indiquant à Bash de changer son répertoire actuel en HOME. (Dans MSYS, HOME est défini dans fichier 'profil')

CD $HOME

5) Avant la ligne avec le texte 'CD $ HOME', copiez le code suivant - ajouter ce script dans 'profile' va indiquer à MSYS bash de lancer 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) Ouvrez le fichier 'bash_profile' dans un éditeur de texte ( Sublime Text x est bon) et la fin du fichier (au bas du fichier).

7) Copiez le code suivant à la fin du fichier - ajouter ce script dans '.bash_profile' indiquera à Bash de lancer le '.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, écrivons maintenant un petit script dans '.bashrc' pour voir si 'profile' appelle 'bash_profile' et si 'bash_profile' appelle '.bashrc'.

8.1) Pensez au nom de la commande que vous souhaitez créer. Utilisons 't' pour signifier test

8.2) Ouvrez le terminal Bash et tapez 't'. Bash devrait répondre 't: commande non trouvée' - si elle ne dit pas 't: commande non trouvée', répétez les étapes 8.1 et 8.2 jusqu'à ce que le nom de votre commande dise 'commande non trouvée'. Vous ne voulez pas aliaser un nom de commande attribué à bash BAD !, il doit donc être 'commande non trouvée'

8.3) OK, 't' m'a donné un 't: commande non trouvée'. Maintenant écrivons le script dans '.bashrc'

8.4) Dans '.bashrc' écrire

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

8.5) Enregistrer le fichier '.bashrc' dans 'C: \ msys \ 1.0 \ home \ USERNAME'

9) presque là. Maintenant, redémarrez le terminal Bash et assurez-vous de fermer tous les terminaux Bash précédemment ouverts.

10) Tapez le terminal 't'. Il devrait répondre 'test réussi'. Sinon, vérifiez soigneusement que le code a été correctement écrit (commencez par vérifier les guillemets)

Quelques notes 1) 'nom de fichier source' est identique à '. nom de fichier'

2) "" Les guillemets doubles permettent de remplacer des variables par son contenu. Les guillemets simples ne le sont pas.

3) $ HOME est / home / USERNAME identique à ~ est / home / USERNAME

4) Une fonction est toujours préférée à l'alias 2

Pour plus de détails, voir référence BASH

Je suis nouveau à Bash. Il n'y a donc aucune garantie que je l'ai fait de la meilleure façon.

Bonne chance!

Atome
la source