在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
目前大家遇到比較多的是第二種情況,可以試試~~