次提示符 linux,Linux:终端提示符 (prompt) 不如期生效原因

f80b1ff071f716f6cc0cf47d9fc61d03.jpg-wh_651x-s_3853969897.jpg

媒介

先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只如果每个接触shell的童鞋, 都有看到, 那就是我们在输敕令时前面的那串提示符.

例如:

当然, 这个样式是可以修改的, 这就涉及到我们的PS1和PS2了, 有经验或者以前有设置过的童鞋估计都不会陌生, 木有接触过的童鞋可以参考一下链接进修下: linux PS1 提示符定义

问题

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

想要在每次履行敕令时, 看到当前的时光

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

所以我们可以在~/.bash_profile琅绫擎参加下面的内容:export PS1="$(date +"%Y-%m-%d %H:%M:%S")\$ "

如代码所示, 应当可以或许在提示符上看到我们的时光, 如今实验下:

9b3200795a12fae8784893108294883d.png

正如我们猜测的一样, 提示符那边已经变成了我们的时光了, 然则貌似出现了一个问题, 当我们在履行下一条敕令时, 时光却没有改变, 照样40秒, 哪怕我们多履行几回照样如许.

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

推敲到是不是写逝世敕令的缘故, 于是就把date敕令放到函数中, 看可否成功:

修改~/.bash_profile文件如下:

4b66fef44f453a7b707c045caf872c40.pngecho_time(){

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

}

export PS1="$(echo_time)\$ "

b65ac50dff1978298c6e7e234c3dda02.png# 双引号:

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

# 单引号:

PS1='$(date +%F)'掏出来的结不雅就是: PS1='$(date +%F)'

结不雅是掉败的, 貌似如许的用法也是不可的! 查阅了很多文档, 直到看到一篇文┞仿说, 两边必须是单引号, 才恍然大年夜悟, 开端有点懂得为什愦我的效不雅会掉败.

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

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

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

原因分析

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

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

因为膳绫擎的并不是此次的主题, 所以简单跳过. 其实我们的prompt除了可以或许展示这些信息之外, 还可以或许展示些较为'动态'的器械.

解决筹划

找到了原因, 修改起来就轻车熟路了, 我们只须要将刚才的语法, 大年夜双引号换成单引号即可.

修改~/.bash_profileecho_time(){

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

}

export PS1='$(echo_time)\$ '

9bde6e1aa1aafdc4e0933dc42dc19061.png

推荐阅读

1. NumPy (提交数: 15980, 供献者数: 522)近年来,Python 在数据科学行业扮演着越来越重要的角色。是以,我根据比来的应用体验,在本文中列出了对数据科学家、工程师们最有效的那些库。因>>>详细阅读

地址:http://www.17bianji.com/lsqh/36415.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值