2011-12-22 61 views
14

我有運行Ubuntu 10.04的Amazon EC2計算機。除非運行「bash」命令,否則BASH和/或.BASHRC在SU或SSH登錄後無法正常工作

默認的用戶,Ubuntu的.bashrc似乎是正確的行爲,但如果我sshsu第二用戶了,Mikey,它不正常,直到我跑bash顯示:

例1)更改用戶與su

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

例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

你可以從非工作shell中echo $ SHELL'嗎?這是可能的(也可能基於''''),它不是'bash'。 – 2011-12-22 17:17:45

+0

謝謝,你完全正確。 \ [\ E] 0;帶有\ U @ \ H:\ W \ A \] \ü@ \ H:\ W $回聲$ SHELL /bin/sh的 現在谷歌搜索,看看如何改變這種狀況,但任何指針將不勝感激。 :) – Mikey 2011-12-22 17:23:50

+0

請參閱下面的示例使用'usermod'。 – 2011-12-22 17:24:46

回答

37

的話,其實,你的shell是不是bash,你可以嘗試改變它像這樣:

usermod -s /bin/bash mikey 

如果/斌/慶典是bash該系統上的位置。

+0

太棒了,謝謝! – Mikey 2011-12-22 17:28:23

+0

你只需保存我的夜晚:) – Roman 2012-06-04 21:49:48

+0

謝謝!我曾經在一些服務器上遇到過這個問題。 – 2012-12-28 18:07:36

3

我認爲你的默認shell是dashsh而不是bash在這種情況下。 echo $SHELL應該顯示它,如果它顯示/bin/sh,它可能是一個鏈接,所以檢查ls -l /bin/sh不鏈接到其他一些shell。

2

爲了解決這個問題的永久基礎上,修改/ etc/passwd文件

從這:

kwilson:X:3042:3042 :: /家/ jjson:/ bin/sh的

將其更改爲:

kwilson:X:3042:3042 :: /家/ jjson:/斌/慶典

2

難道你不能用chsh來更換shell嗎?而不是黑客/ etc/passwd?