關於根檔案系統中命令列提示符的顯示

2021-05-21 13:14:44 字數 1810 閱讀 2735

華清遠見嵌入式學院

講師。我們經常用busybox生成根檔案系統,可是根檔案系統起來以後命令列提示符只有乙個「#」號,沒有像linux發行版那樣是[user@hostname currentpath] #,那麼我們這裡就說說如何讓我們的根檔案系統按這個方式顯示。

要修改命令列提示符,首先我們需要知道乙個環境變數ps1,我們可以檢視bash的幫助文件檢視關於ps1的說明:

bash有兩級命令提示符,我們這裡說的是第一級,這一級預設的提示符是字元「$」(超級使用者是「#」),我們可以通過修改ps1修改這個提示符,格式為:

ps1=」command list」

命令列表有很多引數如下:

/! 顯示該命令的歷史記錄編號。

/# 顯示當前命令的命令編號。

/$ 顯示$符作為提示符,如果使用者是root的話,則顯示#號。

// 顯示反斜槓。

/d 顯示當前日期。

/h 顯示主機名。

/n 列印新行。

/nnn 顯示nnn的八進位制值。

/s 顯示當前執行的shell的名字。

/t 顯示當前時間。

/u 顯示當前使用者的使用者名稱。

/w 顯示當前工作目錄的名字。

/w 顯示當前工作目錄的路徑

我們檢視我們發行版linux中的ps1.

$echo echo $ps1

[/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 --->

[*] username completion

[*] fancy shell prompts

如果不選擇上面兩項,檔案系統是不是別ps1這個環境變數的引數的。

建立/etc/hostname新增如下內容(我們的主機名):

farsight

修改/etc/init.d/rcs新增如下內容(匯入主機名配置檔案):

/bin/hostname –f /etc/hostname

修改根檔案系統中/etc/profile檔案新增如下內容:

hostnam=`/bin/hostname`

ps1=`[/u@/h /w]/# `

export ps1 hostname

建立/etc/passwd新增如下內容:

root:x:0:0:root:/root:/bin/sh

這個時候我們重新啟動我們的開發板會發現命令列提示符已經是我們想要的那種現實了:

[root@farsight /etc] #

關於根檔案系統中命令列提示符的顯示

我們經常用busybox生成根檔案系統,可是根檔案系統起來以後命令列提示符只有乙個 號,沒有像linux發行版那樣是 user hostname currentpath 那麼我們這裡就說說如何讓我們的根檔案系統按這個方式顯示。要修改命令列提示符,首先我們需要知道乙個環境變數ps1,我們可以檢視bas...

定製Ubuntu命令列提示符

size medium 安裝ubuntu的時候使用者名稱起的很長,剛開始沒怎麼注意,命令列用的比較多的時候就發現這真是個失誤。命令視窗就那麼寬,前面很長都用了現在使用者名稱和主機名了,後面如果再顯示路徑,剩餘可以顯示命令的空間就不夠了。命令多行輸入不方便也不直觀,就想修改這個命令提示符。隨便搜素了下...

定製bash命令列提示符

bash中內建了ps1 ps2 ps3 ps4及prompt command共5個變數,其中ps1用於命令列提示符。預設為 root movie lxh echo ps1 u h w 可對其設定自定義顏色及顯示樣式。export ps1 e 0 32m u h w e m 其中 033可用 e替換,...