2009-04-26 7 views

Répondre

72

Exécutez le code suivant, par exemple pour changer votre shell le plus récent Bash installé par MacPorts

chsh -s /opt/local/bin/bash 

Si cela vous donne le message,

" non-standard shell "

vous devrez ajouter

/opt/local/bin/bash 

à

/etc/shells 

Notez que /etc/shells est simplement un fichier texte, vous pouvez donc le modifier directement si vous vous authentifiez en tant qu'utilisateur root. Vous pouvez modifier par programme par la commande

sudo -s 
Password: 
# echo /opt/local/bin/bash >> /etc/shells 

Si votre première commande chsh échoué, exécutez maintenant à nouveau si vous avez réussi à modifier le fichier ci-dessus.

+0

Si vous rencontrez des problèmes lors de l'exécution de l'application de port, vous devrez peut-être également mettre à jour vos profils bash. Voir http://superuser.com/a/366645/114131 pour plus d'informations. –

+0

Notez qu'il peut être nécessaire de réordonner les entrées dans '/ etc/shells' de sorte que le nouvel emplacement' bash' en précède d'autres, pour que tout fonctionne correctement. – DilithiumMatrix

+0

@zhermes: Pas vrai. L'ordre dans/etc/shells n'a aucun effet sur quoi que ce soit. – Noldorin

2

Je suppose qu'il est installé mais n'est pas utilisé comme shell de connexion.

Vous pouvez changer le shell en utilisant dscl sur la ligne de commande.

À l'invite dscl les éléments suivants:

list Local/Default/Users 
read Local/Default/Users/<your username here> 
change Local/Default/Users/<your username here> UserShell /bin/bash /opt/local/bin/bash 

J'ai un autre exemple d'utilisation dscl sur mon blog si ça aide.

+1

Vous devez d'abord ajouter le nouveau shell à/etc/shells: # sudo écho/opt/local/bin/bash >>/etc/shells – Fa11enAngel

+2

change Local/Par défaut/Utilisateurs/simpatico UserShell/bin/bash/opt/local/bin/bash

statut d'attribut: eDSAttributeNotFound DS Erreur: -14134 (eDSAttributeNotFound) – simpatico

2

Vous pouvez changer votre shell de connexion, de votre shell existant de connexion Mac OS X (par défaut son /bin/bash livré avec Mac OS X), à MacPorts /opt/local/bin/bash juste en utilisant le script shell suivant:

#!/opt/local/bin/bash 
if [ `grep /opt/local/bin/bash /etc/shells` ]; 
then 
    echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash;  
else 
    echo /opt/local/bin/bash | sudo tee -a /etc/shells; 
    chsh -s /opt/local/bin/bash; 
fi 
+2

Ne pas tester la sortie de grep, tester son état de sortie. 'si grep -Fxq/opt/local/bin/bash/etc/shells; alors' – geirha

Questions connexes