BASH и/или .BASHRC не работают должным образом после входа SU или SSH, если не выполнить команду "bash"

У меня есть машина Amazon EC2 с Ubuntu 10.04.

Пользователь по умолчанию, ubuntu .bashrc, кажется, ведет себя правильно, но если я ssh или su для второго пользователя, mikey, он не отображается должным образом, пока я не запустил bash:

Пример 1.) Изменение пользователя с помощью su

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

Ex 2.) SSH-ing непосредственно в качестве пользователя

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

Я пробовал играть с ~/.profile и ~/.bash_login, чтобы включить

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

но до сих пор ничего не казалось трюком.

любые указатели будут очень благодарны. спасибо!

Ответы

Ответ 1

Если на самом деле ваша оболочка не является bash, вы можете попробовать ее изменить следующим образом:

usermod -s /bin/bash mikey

Если/bin/bash - это расположение bash в этой системе.

Ответ 2

Я думаю, что ваша оболочка по умолчанию dash или sh, а не bash в этом случае. echo $SHELL должен показать его, если он показывает /bin/sh, это может быть ссылка, поэтому убедитесь, что ls -l /bin/sh не ссылается на какую-либо другую оболочку.

Ответ 3

Чтобы исправить это на постоянной основе, измените /etc/passwd

From:

kwilson: х: 3042: 3042::/Главная/jjson:/бен/ш

Измените его на:

kwilson: х: 3042: 3042::/Главная/jjson:/bin/ bash

Ответ 4

Не можете ли вы использовать chsh для изменения оболочки? вместо взлома/etc/passwd?