2009-04-26 15 views

Respuesta

72

Ejecutar el siguiente código, por ejemplo, para cambiar su shell a la nueva Bash instalado por MacPorts

chsh -s /opt/local/bin/bash 

Si eso te da el mensaje,

" non-standard shell "

tendrá que añadir

/opt/local/bin/bash 

a

/etc/shells 

Tenga en cuenta que /etc/shells es solo un archivo de texto, por lo que puede editarlo directamente si se autentica como raíz. Usted puede cambiar mediante programación por el comando

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

Si el primer comando chsh falló, ejecutarlo ahora de nuevo si se las arregló para cambiar el archivo anterior.

+0

Si encuentra problemas al ejecutar la aplicación de puerto, también puede necesitar actualizar sus perfiles de bash. Consulte http://superuser.com/a/366645/114131 para obtener más información. –

+0

Tenga en cuenta que puede ser necesario reordenar las entradas en '/ etc/shells' de manera que la nueva ubicación' bash' preceda a otras, para que todo funcione correctamente. – DilithiumMatrix

+0

@zhermes: No es cierto. El orden en/etc/shells no tiene efecto en nada. – Noldorin

2

Supongo que está instalado pero no se usa como shell de inicio de sesión.

Puede cambiar el shell utilizando dscl en la línea de comandos.

En el indicador de dscl lo siguiente:

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 

He otro ejemplo de utilización dscl en mi blog si ayuda.

+1

Primero tiene que agregar el nuevo shell a/etc/shells: # sudo echo/opt/local/bin/bash >>/etc/shells – Fa11enAngel

+2

cambiar Local/Default/Users/simpatico UserShell/bin/bash/opt/local/bin/bash

estado del atributo: eDSAttributeNotFound DS Error: -14134 (eDSAttributeNotFound) – simpatico

2

Puede cambiar su shell de inicio de sesión, desde su shell de inicio de Mac OS X ya existente (por defecto su /bin/bash enviado con Mac OS X), a DarwinPorts /opt/local/bin/bash simplemente mediante la siguiente secuencia de comandos shell:

#!/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

No pruebe la salida de grep, pruebe su estado de salida. 'if grep -Fxq/opt/local/bin/bash/etc/shells; entonces' – geirha

Cuestiones relacionadas