轉自
Linux中切換用戶變成-bash4.1-$的解決方法 - xia_xia的博客 - 博客頻道 - CSDN.NET
http://blog.csdn.net/xia_xia0919/article/details/50588985
在linux中切換用戶時變成-bash4.1-$,發現有兩個情況可能會出現這種現象。
場景一:1、在根目錄下創建目錄dir
2、useradd -d /dir tom 創建用戶tom,指定其家目錄為/dir,而不是其默認家目錄下(/home/tom)
3、su - tom 切換到tom用戶,出現-bash-4.1$
原因分析:如果我們沒有改變用戶的家目錄的話,通常情況下,新增用戶指定目錄應該是/home,先來看一下用戶jinjin默認家目錄下有哪些文件
再來看一下tom用戶家目錄下有什么?
發現在tom的家目錄下是空的,缺少用戶登入需要的環境配置文件.bash_profile .bashrc等,那么為什么需要這樣文件,這就是跟linux的機制有關聯了,因為在linux下每次通過useradd創建新的用戶時,都會將所有的配置文件從/etc/skel復制到新用戶的主目錄下,一般默認在home下面的新用戶主目錄,而關於/etc/skel這個目錄,是主要被useradd所用到。而在我們創建tom用戶時,系統也出現過提示,沒有將/etc/skel的文件復制到該目錄。
解決辦法:通過如上的解析,我們不難發現要解決命令在用戶切換之后為什么會變成bash格式,就需要將 /etc/skel的用戶環境配置文件復制到指定的默認目錄下即可(此處注意/etc/skel/.后面的點不要漏了,因為那幾個文件都是隱藏文件,不加點無法對隱藏文件進行復制),這樣在切到tom用戶就沒有出現-bash-4,1$了
現在再看看tom的家目錄下就有了那些環境配置文件了
場景二:1、創建用戶sara,家目錄為默認家目錄 /home/sara
2、使用usermod -d /tmp/sara sara 更改用戶sara的家目錄
3、su - sara 出現-bash4.1-$
vim /etc/passwd查看到sara的家目錄已經到 /tmp/sara中了
原因分析:此時查看sara的家目錄確實已經在/tmp/sara中,但是發現sara文件夾仍在/home下而不在/tmp下,那用戶在登入時即無法在其家目錄下讀取到配置文件。
這是為什么呢?查看usermod的參數,發現-m -d需要一起使用才能把已存在的sara文件夾移到新目錄中去。
解決辦法:在改變用戶家目錄時 usermod帶上參數-d -m
目前大家遇到比較多的是第二種情況,可以試試~~