我們經常用busybox產生根檔案系統,可是根檔案系統起來以後命令列提示符只有一個“#”號,沒有像linux發行版那樣是[user@hostname currentpath] #(例如,root@ubuntu:/rootfs/filesystem/etc# ),那麼我們這裡就說說如何讓我們的根檔案系統按這個方式顯示。
要修改命令列提示符,首先我們需要知道一個環境變數PS1,我們可以查看bash的協助文檔查看關於PS1的說明:
bash有兩級命令提示字元,我們這裡說的是第一級,這一級預設的提示符是字元“$”(超級使用者是“#”),我們可以通過修改PS1修改這個提示符,格式為:
PS1=”command list”
命令列表有很多參數如下:
\! 顯示該命令的記錄編號。
\# 顯示當前命令的命令編號。
\$ 顯示$符作為提示符,如果使用者是root的話,則顯示#號。
\\ 顯示反斜線。
\d 顯示當前日期。
\h 顯示主機名稱。
\n 列印新行。
\nnn 顯示nnn的八進位值。
\s 顯示當前啟動並執行shell的名字。
\t 顯示目前時間。
\u 顯示目前使用者的使用者名稱。
\W 顯示當前工作目錄的名字。
\w 顯示當前工作目錄的路徑
我們查看我們發行版linux中的PS1.
root@ubuntu:/# echo $PS1
${debian_chroot:+($debian_chroot)}\u@\h:\w\$
看了發行版是如何顯示命令列提示符,那麼我們再看一下為什麼我們做的根檔案系統只顯示一個#,用busybox產生的根檔案系統使用的是ash,我們看下busybox中關於ash的檔案。
在busybox-1.15.4/shell/ash.h中有這樣的語句
/*
* PS1 depends on uid
*/
#if ENABLE_FEATURE_EDITING && ENABLE_FEATURE_EDITING_FANCY_PROMPT
vps1.text = "PS1=\\w \\$ ";
#else
if (!geteuid())
vps1.text = "PS1=# ";
#endif
結合上面PS1參數我們可以看出在busybox產生的根檔案系統中可能出現兩種顯示方式,一種是“currentpath $”另一種是 “#”這兩種顯示在較老的版本中都有。
按照上面的方法修改我們的根檔案系統中的命令列提示符。首先我們需要修改buxybox中配置,添加如下兩個選項:
Busybox Settings --->
Busybox Library Tuning --->
[*] Tab completion
(Tab縮排功能,這樣就可以和pc機一樣方面提示命令了)
[*] Username completion
[*] Fancy shell prompts
如果不選擇上面兩項,檔案系統是不是別PS1這個環境變數的參數的。
建立/etc/profile添加如下內容(有了上面的瞭解,下面的設定就不難理解了):
#!/bin/sh
export HOSTNAME=caoyi(你的主機名稱)
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
這個時候我們重新啟動我們的開發板會發現命令列提示符已經是我們想要的那種現實了:
[root@caoyi /home]#