Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2603133
  • 博文数量: 877
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5920
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-05 12:25
个人简介

技术的乐趣在于分享,欢迎多多交流,多多沟通。

文章分类

全部博文(877)

文章存档

2021年(2)

2016年(20)

2015年(471)

2014年(358)

2013年(26)

分类: LINUX

2014-03-24 16:01:45

我想将mini2440开发板启动后进入shell时的信息:【root@FriendlyARM】,后面的FriendlyARm改为其它内容,请问应该如何修改文件系统中的配置文件?
问题解决了 
在/etc目录下有一个mime.types文件,其中有这么一句:
application/x-futuresplash        spl
然后在这个目录下还有一个叫profile的文件(用户环境配置文件,每个用户登录时都会运行的环境变量设置),其中有这么一句:
PS1='[root@FriendlyARM]\$
将这个里面的FriendlyARM修改后,就可以了。
PS1:命令行提示符 下面是PS1变量中各特殊符号的含义:

\a  显示系统日期,格式:星期 日期

  例:PS1="\d >" 结果:六 10月 24 >

\A  显示系统时间,格式:HH:MM

  例:PS1="\A >" 结果:21:04 >

\t  显示系统时间,格式:HH:MM:SS (24小时制)

  例:PS1="\t >" 结果:21:04:32 >

\T  显示系统时间,格式:HH:MM:SS (12小时制)

  例:PS1="\T >" 结果:09:04:32 >

\h  显示称(简称)

  例:PS1="\h >" 结果:CentOS >

\H  显示称(全称)

  例:PS1="\H >" 结果:CentOS.localdomain >

       注:这里对称说明一下,如果查看本机主机名称,直接执行命令"hostname",如果想修改主机名称,则要以"root"用户权限,对 "/etc/sysconfig/network "文件进行修改

\u  显示用户名称

  例:PS1="\u >" 结果:root >

\v  显示 bash 版本号

  例:PS1="\v >" 结果:3.2.25 >

\w :完整的工作目录名称。根目录会以 ~代替

  例:当前路径 /root/test

            PS1="\w >" 结果:~/test >

\W :显示以 "basename" 命令取得路径信息的最底层目录名称

  例:当前路径 /root/test

            PS1="\W >" 结果:test >

\# :显示当前用户要求系统执行的命令的序号

  例:执行     PS1="\u \# >" 结果:root 1 >

         再执行 ls -la               结果:root 2 >

         再执行 clear               结果:root 3 >

\$ :提示字符,如果是root时,提示符为:#   ,普通用户则为:$

       注:这个提示字符我试验了,可试改过后,即使是"root"用户,也是显示"$",不大明白是为什么。

              这个我找到原因了,"\$"一定要写成 "\\$" 这样就可以了。

默认的PS1内容为: PS1='[\u@\h \W]\$ ' ,所以默认的提示符就是: [root@CentOS ~]#

如果想要永久的变更系统命令提示符,则要对 "/etc/bashrc" 进行修改,退出再进入,就不会恢复原来的了。

方法如下:执行 "cat /etc/bashrc | grep PS1",找到提示符变量设置的代码,然后执行 "vi /etc/bashrc"对前一命令查到的代码进行修改,并保存。

这个PS1 (是数字1不是字母i)是我们的 命令提示符.

每当我们按下[Enter]按键去执行某个命令的时候,最后会再次出现提示字符时,则会主动的去读取这个变数的值了.

每个版本bash的SPI变量内的特殊符号也许会有一些差异.我们可以用man bash去查询一下相关的变数.

下面列出几个常用的PS1变量内特殊符号的意义.

\d    :代表日期,格式为 weekday month date
\H    :完整的主机名
\h    :仅仅取得主机名称的第一个名字
\t    :显示时间,为24小时格式.例如:HH:MM:SS
\T    :显示时间,为12小时格式.
\A    :显示时间,为24小时格式, HH:MM
\u    :目前使用者的帐号名称
\v    :BASH的版本信息
\w    :完整的目录工作名称.根目录会以~取代.
\W    :利用basename取得工作目录名称,所以仅仅会列出最后一个目录名
\#    :下达的第几个命令
\$    :提示字符,如果是管理员的则提示为#,否则就是$

根据自己当前Linux的提示内容,可以得出PS1的内容为:'\[\u@\h \W\]\$'

这样就理解为什么我们的提示字符会是:[root@linux ~]#了吧.

我们也可以自己设置一个

设置以下命令:PS1='[\u@\h \w \A #\#]\$ '

那么我们的命令提示符则为:[root@linux /home 17:02 #85]#

注意,时间后面的是,我们当前执行命令的次数,没执行一次命令则会加1
不管是在移植根文件系统还是移植内核的时候我们总是希望可以添加一些独一无二属于自己的东西,比如自己的名字或者代号。

      现在我们经常会用busybox生成根文件系统,可是根文件系统起来以后命令行提示符只有一个“#”号,没有像linux发行版那样是[user@hostname currentpath] #,那么我们这里就说说如何让我们的根文件系统按这个方式显示。

      首先要介绍一个环境变量PS1

      我们可以查看bash的帮助文档查看关于PS1的说明:

     bash有两级命令提示符,这里说的是第一级,这一级缺省提示符是字符“$”,我们可以通过修改PS1修改这个提示符,格式是;

     PS1=“参数”
     命令列表有很多参数如下:
  \! 显示该命令的历史记录编号。
  \# 显示当前命令的命令编号。
  \$ 显示$符作为提示符,如果用户是root的话,则显示#号。
  \\ 显示反斜杠。
  \d 显示当前日期。
  \h 显示主机名。
  \n 打印新行。
  \nnn 显示nnn的八进制值。
  \s 显示当前运行的shell的名字。
  \t 显示当前时间。
  \u 显示当前用户的用户名。
  \W 显示当前工作目录的名字。
  \w 显示当前工作目录的路径
首先我们需要修改buxybox中配置,添加如下两个选项:
  Busybox Settings --->
  Busybox Library Tuning --->
  [*] Username completion
  [*] Fancy shell prompts

  创建/etc/hostname添加如下内容(我们的主机名):
  Happy
  修改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@Happy/etc] #
    文件的执行过程是:

                profile----->HOSTNAME --------->/bin/hostname

                rcS------>/bin/hostname--------->/etc/hostname--------------->Happy


注意:
使用方法:
PS1='自定义内容'

注意两边的单引号

示例: PS1='(\u@\H \d \t)\$'

----------------------------------------------------------------------------------------------------------------

PS1:就是用户平时的提示符。
PS2:第一行没输完,等待第二行输入的提示符。

Linux系统提示符是用系统变量PS1来定义的。一般系统默认的形式是:[username@host 工作目录]$. 
用echo $PS1可以得到PS1的值,即PS1="[\u@\h \w]"\$ 
登录后可以更改PS1的显示样式,但是当退出重启登录进入系统后,样式又变成系统默认的样式了,如果要彻底改变它的样式,只能从配置文件中改。
PS是在用户根目录下的.bash_profile中定义的。 

如 

# .bash_profile 

# Get the aliases and functions 

if [ -f ~/.bashrc ]; then 

. ~/.bashrc 

fi 

# User specific environment and startup programs 

#以下是设定的PS1的值 

PS1="[\u@\h \w]\$" 

PATH=$PATH:$HOME/bin 

#使用export把PS1输出,以使它可以在子shell中生效,这会造成ROOT用户的也采用此样式 

#export PS1 要慎用 

export PATH 

unset USERNAME 

下面简单说说环境下默认的特殊符号所代表的意义: 

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1" 

\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux 

\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 

\t :显示时间为24小时格式,如:HH:MM:SS 

\T :显示时间为12小时格式 

\A :显示时间为24小时格式:HH:MM 

\u :当前用户的账号名称 

\v :BASH的版本信息 

\w :完整的工作目录名称。家目录会以 ~代替 

\W :利用basename取得工作目录名称,所以只会列出最后一个目录 

\# :下达的第几个命令 

\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

==================================================


我们可以通过设置PS1变量使提示符成为彩色。在PS1中设置字符序列颜色的格式为:
\[\e[F;Bm\]
其中``F''为字体颜色,编号30~37;``B''为背景色,编号40~47。
可通过``\e[0m''关闭颜色输出;特别的,当B为1时,将显示加亮加粗的文字,详细请看下面的颜色表与代码表。

颜色表 

前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

代码 意义
-------------------------
0 OFF
1 高亮显示
4 underline
5 闪烁
7 反白显示
8 不可见


如果想要设置终端提示符的样式只要把$PS1在~/.bahrc指定即可比,比如我的设置如下:
设置一:
PS1="\[\e[32m\][\u@\h \w]$\[\e[m\]"
export PS1
效果:
[LinuxSong@test ~]$ 

设置二:

if [ $TERM = 'linux' ]; then
export PS1="[\[\e[36;1m\]\u@\h \[\e[31;1m\]\w\[\e[32;1m\]]> "
zhcon --utf8
clear
elif [ $TERM = "xterm" ]; then
export PS1="[\[\e[31;1m\]\w\e[0m]> "
fi


【转载】 linux PS1 提示符定义







阅读(2342) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~