web-dev-qa-db-fra.com

Les alias dans .bash_profile ne fonctionnent pas correctement

J'ai essayé de modifier le .bash_profile qui se trouve dans mon répertoire racine, mais j'ai rencontré des problèmes. Je suis sous OS X, Yosemite, sur un Macbook Pro. Si je comprends bien, le fichier .bash_profile contient le script qui est appelé automatiquement chaque fois que l'application Terminal est ouverte et que le shell bash démarre. Voici ce que j'ai actuellement écrit dans ce fichier:

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

Cela fonctionne parfaitement bien. Cependant, je veux ajouter un alias (juste en dessous des deux lignes ci-dessus) comme suit:

alias test='cd ..'

Cependant, lorsque je l'enregistre et démarre le terminal, j'obtiens le message suivant:

-bash: alias: ..": not found

Remplacer les guillemets simples par des guillemets doubles n'aide pas, pas plus que de les supprimer complètement. Curieusement cependant, l'alias suivant fonctionne:

alias c=clear

Lorsque je tape c dans le terminal, cela efface l'écran, comme on peut s'y attendre. Cependant, si je saisis plutôt cette ligne avec des guillemets dans le profil bash:

alias c='clear'

Ensuite, j'obtiendrai ce qui suit chaque fois que j'entrerai c dans le terminal:

-bash: 'clear': command not found

Notez que je ne reçois pas de message d'erreur au démarrage pour cet alias.

Qu'est-ce que je fais mal? Existe-t-il un paramètre que je dois modifier quelque part pour que les alias fonctionnent correctement? J'ai vu des exemples d'alias précédents et ils ne fonctionnent tout simplement pas pour moi.

12
Adrian M

Il semble que Shell n'accède pas à votre .bash_profile lors de la connexion via le terminal.

.bash_profile est un fichier de configuration de bash Shell. Lorsque bash démarre Shell, Shell exécute les commandes dans .bash_profile. Mais il existe de nombreux types de shells, et différents shells exécutent différents fichiers de configuration.

Le terminal est un logiciel destiné à recevoir les entrées des utilisateurs, Shell exécutera des commandes. Vous pouvez utiliser cat /etc/Shell pour répertorier les coquilles acceptables. Par exemple:

$ cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

Le shell par défaut est bash Shell sur Mac OX. Mais si vous avez installé zsh, le Shell par défaut est zsh, au démarrage de zsh Shell, Shell trouvera le fichier nommé .zshrc, et exécutez les commandes dans .zshrc.

Vous pouvez utiliser echo $Shell utilises tu:

$ echo $Shell
/bin/bash
-> echo $Shell
/bin/zsh

Si votre shell par défaut est zsh, .bash_profile ne fonctionne pas, de façon inversée. Le fichier de configuration de zsh est .zshrc. Et je suppose que votre problème est que votre shell par défaut n'est pas bash Shell. Par exemple, si votre shell par défaut est zsh, vous devez configurer le .zshrc , il suffit d'ajouter

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

ou autre configuration à ~/.zshrc.

Ensuite source ~/.zshrc, et la configuration fonctionnera immédiatement.

22
nodejh

Pour moi, cela n'a pas fonctionné dans le même terminal. J'ai dû en ouvrir un nouveau pour le faire fonctionner.

9
Kannan Ramamoorthy

Envelopper la commande avec une double citation a fonctionné pour moi. J'essayais avec toutes les manières possibles mentionnées dans ce fil et aucune d'entre elles n'a fonctionné. Ensuite, j'ai remplacé le guillemet simple par double et cela a fonctionné.

    alias mysql_start="Sudo /path/to/server/mysql.server start"
8

Le tueur pour moi était l'espace et les guillemets simples. alias test = "cd .." a fonctionné. Ne mettez aucun espace entre alias_name =

4
user2012643

Les fichiers "système" de niveau utilisateur doivent contenir du "texte brut". La façon de définir/configurer cela pour votre "éditeur de choix" peut varier (je n'utilise pas de Mac, donc je ne suis pas très utile pour ça.) Soo,

  1. créez votre profil 'à partir du Shell' en ajoutant directement des lignes, c'est-à-dire supprimez les 'mauvaises lignes puis:

    echo "une chaîne de commande" >> ~/path/bash_profile

  2. utiliser 'vi' ou 'vim' ## devrait être 'sûr'

  3. examinez votre dossier via:

    cat -v ~/chemin/bash_profle | plus ## voir des "caractères drôles"? ou
    cat -ve ~/chemin/bash_profle | plus ## voir des "caractères drôles"? ou

ou

vi ~/path/bash_profle # then set 'control codes' to 'on'
set list ## see any 'funny chars' for your 'quotes'?
2
Dale_Reagan

Ce que j'ai réalisé, c'est que Mac a une option pour les guillemets intelligents et les tirets. alias ..='cd ../' est différent de alias ..=‘cd ../‘, où le premier fonctionne mais pas le second.

1
Akshay Mahajan

Si l'alias ne reconnaît pas, identifiez d'abord le Shell que vous utilisez lorsque vous ouvrez votre terminal ou l'invite de commande echo $Shell. Pour moi, c'est / bin/bash donc je vais saisir mes alias dans ~/.bash_profile

Notez que le fichier ~/.bash_profile peut stocker les deux alias à appeler pendant une session de terminal et exécuter automatiquement ces mêmes alias lors de l'ouverture d'une session de terminal. L'exemple ci-dessous serait d'ouvrir un fichier à éditer par texte via logiciel vim. Vous pouvez le changer autre éditeurs de texte comme vous le souhaitez. Vous pouvez voir la différence par méthode de fermeture.

ALIAS CALLOUT (tilise des parenthèses)

  • alias editbp = "vim ~/.bash_profile"

ALIAS AUTORUN (tilise tilda)

  • alias editbp = `vim ~/.bash_profile`
0
fohrums

Vous pouvez exécuter un démarrage automatique personnalisé d'alias dans ~/.bash_profile ou ~/.alias_file ... en collant l'alias de nom de fichier dans ~/.bashrc si vous utilisez bash ou ~/.zshrc si vous utilisez zsh.

Ex:

if [ -s ~/.bash_profile ]; then
    source ~/.bash_profile;
fi
0
Tran Quoc Vuong

Assurez-vous que les commandes d'alias sont ensemble dans le .bash_profile aussi. C'est ce qui n'allait pas avec le mien.

De plus, si vous tapez simplement un alias dans le terminal, il devrait répertorier toutes les commandes d'alias connues, donc si vous ne voyez pas votre commande, vous savez que quelque chose ne va pas.

0
Ankit Agarwal

J'ai corrigé cela en éditant mon .bash_profile dans vim ou nano quelque chose à propos du texte édité l'a gâché, je ne sais pas pourquoi.

J'ai essayé de le modifier dans le bloc-notes en utilisant simplement "open .bash_profile" mais quelque chose sur les symboles a été mal traduit. Vous devez donc soit "vim .bash_profile" ou "nano .bash_profile"

Faire cela a corrigé ce problème pour moi.

0
user4974094