新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 关于根文件系统中命令行提示符的显示

关于根文件系统中命令行提示符的显示

作者:时间:2012-07-23来源:网络收藏

我们经常用busybox生成根,可是根起来以后符只有一个“#”号,没有像linux发行版那样是[user@hoSTnAME currentpath] #,那么我们这里就说说如何让我们的根按这个方式

本文引用地址:http://www.amcfsurvey.com/article/148739.htm

要修改符,首先我们需要知道一个环境变量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] #



评论


相关推荐

技术专区

关闭