2011-12-22 4 views
14

Tengo una máquina Amazon EC2 que ejecuta Ubuntu 10.04.BASH y/o .BASHRC no funciona correctamente después del inicio de sesión SU o SSH a menos que ejecute el comando "bash"

El usuario por defecto, Ubuntu de .bashrc parece estar comportándose adecuadamente, pero si ssh o su al segundo usuario, Mikey, que no se muestra correctamente hasta que corro bash:

Ex 1.) Cambiar de usuario con su

[email protected] ~$ ssh [email protected] 
[email protected]:~$ 
[email protected]:~$ su mikey 
$ 
$ bash 
[email protected]: $ 

Ex 2.) SSH-ing en directamente como el usuario

[email protected] ~$ ssh [email protected] 
/home/mikey/.bashrc: 13: shopt: not found 
/home/mikey/.bashrc: 21: shopt: not found 
/home/mikey/.bashrc: 99: shopt: not found 
/etc/bash_completion: 33: [[: not found 
/etc/bash_completion: 39: [[: not found 
/etc/bash_completion: 52: Bad substitution 
\[\e]0;\[email protected]\h: \w\a\]\[email protected]\h:\w$ 
\[\e]0;\[email protected]\h: \w\a\]\[email protected]\h:\w$ bash 
[email protected]:~$ 

He intentado jugar con ~/.profile y ~/.bash_login incluir

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

pero hasta ahora, nada se parecía a hacer el truco.

cualquier puntero sería muy apreciado. ¡Gracias!

+1

¿Se puede 'echo $ SHELL' del shell que no funciona? Es posible (y probablemente, basado en el '$' solitario) que no sea 'bash'. –

+0

Gracias, estás en lo correcto. \ [\ e] 0; \ u @ \ h: \ w \ a \] \ u @ \ h: \ w $ echo $ SHELL /bin/sh Google buscando ahora para ver cómo cambiar eso, pero Cualquier indicador sería apreciada. :) – Mikey

+0

Vea a continuación un ejemplo usando 'usermod'. –

Respuesta

37

Si, de hecho, el shell no es bash, se puede tratar de cambiarlo, así:

usermod -s /bin/bash mikey 

Si/bin/bash es la ubicación de bash en ese sistema.

+0

¡Impresionante, gracias un montón! – Mikey

+0

Usted acaba de salvar mi noche :) – Roman

+0

gracias! Solía ​​tener este problema en un par de servidores. –

3

Creo que su shell predeterminado es dash o sh y no bash en este caso. echo $SHELL debe mostrarlo, si muestra /bin/sh, podría ser un enlace, por lo tanto, verifique que ls -l /bin/sh no enlaza con algún otro shell.

2

Con el fin de solucionar este problema sobre la base permanente, el cambio/etc/passwd

Desde:

kwilson: x: 3042: 3042 ::/home/jjson:/bin/sh

Cambiar a:

kwilson: x: 3042: 3042 ::/home/jjson:/bin/bash

2

¿No puedes usar chsh para cambiar el caparazón? en lugar de hackear/etc/passwd?

Cuestiones relacionadas