關(guān)于根文件系統中命令行提示符的顯示
我們經(jīng)常用busybox生成根文件系統,可是根文件系統起來(lái)以后命令行提示符只有一個(gè)“#”號,沒(méi)有像linux發(fā)行版那樣是[user@hoSTnAME currentpath] #,那么我們這里就說(shuō)說(shuō)如何讓我們的根文件系統按這個(gè)方式顯示。
本文引用地址:http://dyxdggzs.com/article/148739.htm要修改命令行提示符,首先我們需要知道一個(gè)環(huán)境變量PS1,我們可以查看bash的幫助文檔查看關(guān)于PS1的說(shuō)明:
bash有兩級命令提示符,我們這里說(shuō)的是第一級,這一級缺省的提示符是字符“$”(超級用戶(hù)是“#”),我們可以通過(guò)修改PS1修改這個(gè)提示符,格式為:
PS1=”command list”
命令列表有很多參數如下:
! 顯示該命令的歷史記錄編號。
# 顯示當前命令的命令編號。
$ 顯示$符作為提示符,如果用戶(hù)是root的話(huà),則顯示#號。
顯示反斜杠。
d 顯示當前日期。
h 顯示主機名。
n 打印新行。
nnn 顯示nnn的八進(jìn)制值。
s 顯示當前運行的shell的名字。
t 顯示當前時(shí)間。
u 顯示當前用戶(hù)的用戶(hù)名。
W 顯示當前工作目錄的名字。
w 顯示當前工作目錄的路徑
我們查看我們發(fā)行版linux中的PS1.
$echo echo $PS1
[u@h W] $
看了發(fā)行版是如何顯示命令行提示符,那么我們再看一下為什么我們做的根文件系統只顯示一個(gè)#,用busybox生成的根文件系統使用的是ash,我們看下busybox中關(guān)于ash的文件。
在busybox-1.15.4/shell/ash.h中有這樣的語(yǔ)句
/*
* 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中配置,添加如下兩個(gè)選項:
Busybox Settings --->
Busybox Library Tuning --->
[*] Username completion
[*] Fancy shell prompts
如果不選擇上面兩項,文件系統是不是別PS1這個(gè)環(huán)境變量的參數的。
創(chuàng )建/etc/hostname添加如下內容(我們的主機名):
farsight
修改/etc/init.d/rcS添加如下內容(導入主機名配置文件):
/bin/hostname –F /etc/hostname
修改根文件系統中/etc/profile文件添加如下內容:
HOSTNAM=`/bin/hostname`
PS1=`[u@h W]# `
export PS1 HOSTNAME
創(chuàng )建/etc/passwd添加如下內容:
root:x:0:0:root:/root:/bin/sh
這個(gè)時(shí)候我們重新啟動(dòng)我們的開(kāi)發(fā)板會(huì )發(fā)現命令行提示符已經(jīng)是我們想要的那種現實(shí)了:
[root@farsight /etc] #
評論