2011-12-22 3 views
14

Ho una macchina Amazon EC2 con Ubuntu 10.04.BASH e/o .BASHRC non funzionano correttamente dopo l'accesso SU o SSH a meno che non si esegua il comando "bash"

L'utente predefinito, ubuntu di .bashrc sembra comportarsi correttamente, ma se mi ssh o su al secondo utente, Mikey, non viene visualizzato correttamente fino a quando corro bash:

Ex 1.) Cambiare utente con su

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

Ex 2.) SSH-zione direttamente come utente

[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]:~$ 

Ho provato a giocare con ~/.profile e ~/.bash_login includere

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

ma finora, nulla è sembrato fare il trucco.

qualsiasi suggerimento sarebbe molto apprezzato. Grazie!

+1

Puoi 'echo $ SHELL' dalla shell non funzionante? È possibile (e probabilmente, basato sul solitario '$') che non è 'bash'. –

+0

Grazie, sei esattamente corretto. \ [\ e] 0; \ u @ \ h: \ w \ a \] \ u @ \ h: \ w $ echo $ SHELL /bin/sh Googling ora per vedere come cambiare la situazione, ma qualsiasi suggerimento sarebbe apprezzato. :) – Mikey

+0

Vedi sotto per un esempio usando 'usermod'. –

risposta

37

Se, infatti, la shell non bash è, si può provare a cambiare in questo modo:

usermod -s /bin/bash mikey 

Se/bin/bash è la posizione di bash su quel sistema.

+0

Fantastico, grazie mille! – Mikey

+0

Hai appena salvato la mia notte :) – Roman

+0

grazie! Avevo questo problema in un paio di server. –

3

Penso che la shell di default sia dash o sh e non bash in questo caso. echo $SHELL dovrebbe mostrarlo, dovrebbe mostrare /bin/sh, potrebbe essere un collegamento, quindi controllare che ls -l /bin/sh non si colleghi ad altre shell.

2

Al fine di risolvere questo problema in modo permanente, il cambiamento/etc/passwd

Da:

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

modificarla in:

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

2

Non è possibile utilizzare chsh per cambiare shell? invece di hacking/etc/passwd?