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

        我们经常用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]#


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值