Linux下為啥會出現 -bash-3.2$

tolywang發表於2012-06-06
-bash-3.2$

先根據oracle的基本安裝步驟來,如下命令:
[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# cd /
[root@localhost /]# mkdir -p /u01/oracle
[root@localhost /]# useradd -g oinstall -G dba -d /u01/oracle oracle
[root@localhost ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# su - oracle
-bash-3.2$ :
這個時候我發現在oracle切換使用者之後就出現了-bash-3.2$ :,這表明什麼呢,也就是說缺少bash的環境配置,這裡需要注意的是當我在建立oracle使用者時,是改變了oracle的預設指定目錄,useradd -g oinstall -G dba -d /u01/oracle oracle,也就是說如果沒有改變這個目錄的話,通常情況下,新增使用者預設指定目錄應該是/home/oracle/,在看看預設目錄下有哪些檔案,我們來看看root,如下所示:
[root@localhost ~]# ll -a
total 2562348
drwxr-x--- 14 root root       4096 Feb 15 18:06 .
drwxr-xr-x 24 root root       4096 Feb 15 21:28 ..
-rw-------  1 root root       1224 Feb 15 21:26 .bash_history
-rw-r--r--  1 root root         24 Jan  6  2007 .bash_logout
-rw-r--r--  1 root root        191 Jan  6  2007 .bash_profile
-rw-r--r--  1 root root        176 Jan  6  2007 .bashrc
-rw-r--r--  1 root root        100 Jan  6  2007 .cshrc
再來看oracle更改後的預設目錄下,如下所示:
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ ls -a
此時該目錄下為空,那麼問題就找到了,就是缺少使用者環境配置檔案,,那麼為什麼需要這樣檔案,這就是跟linux的機制有關聯了,因為在linux下每次透過useradd建立新的使用者時,都會將所有的配置檔案從/etc/skel複製到新使用者的主目錄下,一般預設在home下面的新使用者主目錄,而關於/etc/skel這個目錄,是主要被useradd所用到。
  透過如上的解析,我們不難發現要解決命令在使用者切換之後為什麼會變成bash格式,就需要將 /etc/skel的使用者環境配置檔案複製到指定的預設目錄下即可,如下所示:
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[oracle@localhost ~]$
此時的命令列就正常了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-741548/,如需轉載,請註明出處,否則將追究法律責任。

相關文章