新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 關于根文件系統(tǒng)中命令行提示符的顯示

關于根文件系統(tǒng)中命令行提示符的顯示

作者: 時間:2012-07-23 來源:網(wǎng)絡 收藏

我們經(jīng)常用busybox生成根,可是根起來以后符只有一個“#”號,沒有像linux發(fā)行版那樣是[user@hoSTnAME currentpath] #,那么我們這里就說說如何讓我們的根按這個方式。

本文引用地址:http://butianyuan.cn/article/148739.htm

要修改符,首先我們需要知道一個環(huán)境變量PS1,我們可以查看bash的幫助文檔查看PS1的說明:

bash有兩級符,我們這里說的是第一級,這一級缺省的提示符是字符“$”(超級用戶是“#”),我們可以通過修改PS1修改這個提示符,格式為:

PS1=”command list”

命令列表有很多參數(shù)如下:

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

# 當前命令的命令編號。

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

顯示反斜杠。

d 顯示當前日期。

h 顯示主機名。

n 打印新行。

nnn 顯示nnn的八進制值。

s 顯示當前運行的shell的名字。

t 顯示當前時間。

u 顯示當前用戶的用戶名。

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

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

我們查看我們發(fā)行版linux中的PS1.

$echo echo $PS1

[u@h W] $

看了發(fā)行版是如何顯示命令行提示符,那么我們再看一下為什么我們做的根文件系統(tǒng)只顯示一個#,用busybox生成的根文件系統(tǒng)使用的是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參數(shù)我們可以看出在busybox生成的根文件系統(tǒng)中可能出現(xiàn)兩種顯示方式,一種是“currentpath $”另一種是 “#”這兩種顯示在較老的版本中都有。

按照上面的方法修改我們的根文件系統(tǒng)中的命令行提示符。首先我們需要修改buxybox中配置,添加如下兩個選項:

Busybox Settings --->

Busybox Library Tuning --->

[*] Username completion

[*] Fancy shell prompts

如果不選擇上面兩項,文件系統(tǒng)是不是別PS1這個環(huán)境變量的參數(shù)的。

創(chuàng)建/etc/hostname添加如下內(nèi)容(我們的主機名):

farsight

修改/etc/init.d/rcS添加如下內(nèi)容(導入主機名配置文件):

/bin/hostname –F /etc/hostname

修改根文件系統(tǒng)中/etc/profile文件添加如下內(nèi)容:

HOSTNAM=`/bin/hostname`

PS1=`[u@h W]# `

export PS1 HOSTNAME

創(chuàng)建/etc/passwd添加如下內(nèi)容:

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

這個時候我們重新啟動我們的開發(fā)板會發(fā)現(xiàn)命令行提示符已經(jīng)是我們想要的那種現(xiàn)實了:

[root@farsight /etc] #



評論


相關推薦

技術專區(qū)

關閉