学习啦>学习电脑>操作系统>Linux教程>

Linux终端提示符不如期生效的原因是什么

加城分享

  Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。通常我们Linux系统下许多操作都是利用命令实现,但是有用户遇到Linux终端提示符(prompt)不如期生效。是什么原因呢?下面这篇文章主要给大家介绍了Linux终端提示符(prompt)不如期生效的原因以及解决方法,需要的朋友可以参考下。

  具体解决方法:

  因为上面的并不是这次的主题, 所以简单跳过. 其实我们的prompt除了能够展示这些信息之外, 还能够展示些较为'动态'的东西.

  我们先来看个需求(简单):

  想要在每次执行命令时, 看到当前的时间,所以我们可以在~/.bash_profile里面加入下面的内容:

  export PS1="$(date +"%Y-%m-%d %H:%M:%S")\$ "

  如代码所示, 应该能够在提示符上看到我们的时间, 现在试验下:

  正如我们猜测的一样, 提示符那边已经变成了我们的时间了, 但是貌似出现了一个问题, 当我们在执行下一条命令时, 时间却没有改变, 还是40秒, 哪怕我们多执行几次还是这样.

  难道PS1只能加载一次? 但是这个原因很快就被否决, 因为当我们在切换用户时, 提示符的$会改变成#, 而且也有其他的例子(下面会举出来)证明, PS1是每次都会执行的. 所以问题只能在于我们写法中.

  考虑到是不是写死命令的缘故, 于是就把date命令放到函数中, 看能否成功:

  修改~/.bash_profile文件如下:

  echo_time(){

  date +"%Y-%m-%d %H:%M:%S"

  }

  export PS1="$(echo_time)\$ "

  结果是失败的, 貌似这样的用法也是不行的! 查阅了很多文档, 直到看到一篇文章说, 两边必须是单引号, 才恍然大悟, 开始有点理解为什么我的效果会失败.

  可能这里会有童鞋不清楚linux的单引号和双引号的区别, 简单来说就是:

  双引号: 让大部分的符号(例如*), 失去意义,变为普通的字符.

  单引号: 让所有的符号, 都失去意义, 变为普通的字符.

  举个简单的例子, echo "$a" , 可以得出变量a的值, 但是echo '$a' , 就真的只能输出$a. 具体的细节, 可以查阅.

  原因分析

  所以我这边失败的原因就是, 我这里需要用的是单引号, 而不是双引号, 因为如果用双引号, PS1在赋值时, 就已经获得命令/函数的值了, 所以每次打印PS1, 都已经是具体的值了, 而不是一个命令/函数. 就好像:

  # 双引号:

  PS1="$(date +%F)" 取出来的结果就是: PS1="2017-07-24"

  # 单引号:

  PS1='$(date +%F)' 取出来的结果就是: PS1='$(date +%F)'

  所以等到在终端输出时, 就会有不同的表现: 单引号, 每次输出, 都是执行那个函数, 而双引号, 因为已经是固定字符了, 所以每次都是那个值!

  解决方案

  找到了原因, 修改起来就得心应手了, 我们只需要将刚才的语法, 从双引号换成单引号即可.

  修改~/.bash_profile

  echo_time(){

  date +"%Y-%m-%d %H:%M:%S"

  }

  export PS1='$(echo_time)\$ '

  可以看到这里已经是完美解决了我们的问题了~

  补充:Linux基本命令

  1.ls命令:

  格式::ls [选项] [目录或文件]

  功能:对于目录,列出该目录下的所有子目录与文件;对于文件,列出文件名以及其他信息。

  常用选项:

  -a :列出目录下的所有文件,包括以 . 开头的隐含文件。

  -d :将目录像文件一样显示,而不是显示其他文件。

  -i :输出文件的i节点的索引信息。

  -k :以k字节的形式表示文件的大小。

  -l :列出文件的详细信息。

  -n :用数字的UID,GID代替名称。

  -F : 在每个文件名后面附上一个字符以说明该文件的类型,“*”表示可执行的普通文 件;“/”表示目录;“@”表示符号链接;“l”表示FIFOS;“=”表示套接字。

  2.cd命令

  格式:cd [目录名称]

  常用选项:

  cd .. 返回上一级目录。

  cd ../.. 将当前目录向上移动两级。

  cd - 返回最近访问目录。

  3.pwd命令

  格式: pwd

  功能:显示出当前工作目录的绝对路径。

  相关阅读:Linux主要特性

  完全兼容POSIX1.0标准

  这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

  多用户、多任务

  Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。

  良好的界面

  Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

  支持多种平台

  Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。


Linux终端提示符不如期生效的原因相关文章:

1.linux关闭网络命令

2.linux shell退出命令

3.在linux终端中执行root命令

4.Linux系统下如何利用命令行查看移动设备

5.Linux怎么彻底清空终端屏幕

    4019782