web-dev-qa-db-fra.com

Profil MinGW Bash

J'utilise MinGW sous Windows 7. J'ai un .bashrc contenant des alias. Le fichier se trouve dans mon dossier personnel, c'est-à-dire l'endroit où MinGW me lance; il pense donc également que ce dossier est mon dossier personnel. Il ne charge pas le contenu du dossier automatiquement. Je dois exécuter la commande bash pour que les alias fonctionnent.

J'ai essayé de le renommer en .bash_profile. Cela n'a fait qu'empirer les choses, car il ne s'est pas chargé automatiquement ni quand j'ai exécuté bash manuellement.

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

35
KurToMe

bash commence probablement comme un shell de connexion, auquel cas il ne lit pas .bashrc automatiquement. Au lieu de cela, il se lit .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 fichier .bash_profile dans votre répertoire personnel et ajoutez la ligne citée ci-dessus.

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

45
jjlin

J'utilise Windows XP et j'ai le même problème. J'ai trouvé 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 en cours, les éléments suivants peuvent être ajoutés au fichier ~/.profile.

Dans MinGW Shell, j'ai créé .profile:

cd ~
touch .profile

J'ai utilisé Notepad ++ pour le modifier en tant que fichier texte au format Unix nommé .profile et le sauvegarder 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 activé le raccourci MinGW Shell de mon menu de démarrage et ça va, ça a fonctionné! nano sans habillage du texte.

J'espère que ceci vous aide.

8
Bryan

Je n'ai pas trouvé le fichier .bash_profile qui fonctionnait pour moi (il n'était pas en cours de lecture), j'ai donc adopté 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.

2
Paul Munsey

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

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

Juste comme ça :)

1
Koshmaar

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

Dans .bash_profile:

    source ~/.bashrc;

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

0
Bryan

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, profil, bash_profile, bashrc) est différente 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’est-à-dire lorsque vous enregistrez, définissez le type d’enregistrement sur ".all files") avec le nom de fichier ".bash_profile" sur "C:\msys\1.0\home\USERNAME". Remarque. il existe un point comme préfixe pour le nom du fichier (par exemple, '.bash_profile') comme vous le souhaiteriez dans la configuration du système d'exploitation Linux OS

2) Enregistrez un fichier sans extension de fichier (c.-à-d., Lorsque vous enregistrez, définissez le type d’enregistrement sur ".all files") avec le nom de fichier ".bashrc" sur "C:\msys\1.0\home\USERNAME". Remarque. il existe un point comme préfixe pour le nom du fichier (par exemple, '.bash_profile') comme vous le souhaiteriez dans la configuration du système d'exploitation Linux OS

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. fichier 'profil')

CD $HOME

5) Avant la ligne avec le texte 'CD $ HOME', copiez le code suivant. Si vous ajoutez ce script dans 'profile', MSYS bash demandera 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 introuvable'

8.3) O.K., '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 à un 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!

0
Atom