为什么手动设置bash提示(PS1)会导致root使用$而不是#?

斑bad

我使用的是CentOS 6.4。默认情况下,root用户的提示符带有#符号,即看起来像[root@myserver ~]# 

echo $PS1打印出来[\u@\h \W]\$; 但是,如果这样做PS1="[\u@\h \W]\$"(不更改任何东西,afaics),我最终会看到类似以下的提示:[root@myserver ~]$

为什么当我尝试自己进行设置(我最终希望将其更改为更有用的功能)时,它会按$字面意义进行解释吗?我几乎可以找到每个页面(例如,“如何:更改/设置bash自定义提示(PS1)”),该提示\$#为root用户得到a。

加布

在您的问题中,您暗示您根本就没有引号。这显然是错误的,因为这样空格会将参数分配“ PS1 = [\ u @ \ h”与命令“ \ W] \ $”分开。请意识到每个角色都很重要。

无论如何,您可能正在做的是使用双引号(“)而不是单引号(')。在解释您输入内容的shell解释上,它们的行为非常不同。使用双引号,它将尝试使用对于此分配,由于\ u,\ h和\ W没什么特别的,所以它们保持不变;方括号在不同的地方可能有特殊的含义,但在这种情况下不是这样,因此它们也留在原处;但是由于a$具有多种含义,它们都具有特殊含义,因此该\$序列被解释为“忽略美元符号的特殊性,而仅留在其中”,然后将该序列替换为没有进一步解析的单个美元符号,所有结果都分配给PS1,并且由于存在一个字面的美元符号,而不是\$外壳程序构建实际提示时的魔术序列,因此您只会获得美元符号,而不是依赖于有效用户的字符。实际的解析要复杂一些,但这就是这个特定示例的要旨。

您输入的内容:PS1="[\u@\h \W]\$ "
外壳分配的内容:PS1 <- "[\u@\h \W]$ "
您想要的内容:PS1 <- "[\u@\h \W]\$ "
您应该输入的内容:PS1='[\u@\h \W]\$ '

下一步:阅读类似本教程的内容,以了解有关Shell引用的更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 cython 类上使用手动 deepcopy 会导致内存溢出。为什么?

来自分类Dev

为什么bash的提示变量称为PS1?

来自分类Dev

为什么我应该使用$ cacheFactory而不是手动获取/设置数据?

来自分类Dev

为什么TFS合并会自动合并文件,而不是提示我手动合并文件?

来自分类Dev

为什么调用由for循环创建的lambda短链会导致RecursionError,但如果手动创建则正常工作?

来自分类Dev

bash PS1设置

来自分类Dev

Oracle SQL - 为什么我要手动删除“NOT NULL”约束而不是使用“修改”?

来自分类Dev

为什么手动设置时间与当前时间不同

来自分类Dev

为什么更新替代设置为“手动”模式?

来自分类Dev

为什么手动设置时间与当前时间不同

来自分类Dev

为什么没有提示手动输入pthread_mutex_lockerror?

来自分类Dev

为什么电子表格会导致 Excel 每隔一分钟停止响应?没有宏,手动计算

来自分类Dev

如何从bash $ PS1设置变量

来自分类Dev

在bash PS1中设置变量

来自分类Dev

如何从bash $ PS1设置变量

来自分类Dev

Bash:PS1 vs Prompt 命令来设置提示和标题

来自分类Dev

使用cloudformation创建的AWS中手动更新的堆栈将来会导致冲突吗?

来自分类Dev

手动提交symfony表单会导致CSRF错误

来自分类Dev

如何使用手动设置的 RSA 参数加密和解密字符串?为什么 RSACryptoServiceProvider 抛出?

来自分类Dev

为什么最近的Ubuntu 14.04更新会弄乱我的PS1提示?

来自分类Dev

在PS1中使用echo -e会导致Shell中出现换行问题

来自分类Dev

更新bash函数中的变量并在提示符(PS1)中使用它

来自分类Dev

使用自定义PS1提示时Bash覆盖第一行

来自分类Dev

为什么手动挂载设置了不同的文件所有权?

来自分类Dev

为什么在Windows 10中将“ Windows Time”服务始终设置为“手动”?

来自分类Dev

如何使用Dockerfile设置$ PS1?

来自分类Dev

正确获取动态bash提示PS1

来自分类Dev

Bash提示(PS1)损坏并产生错误

来自分类Dev

Bash提示特殊字符未在PS1中扩展

Related 相关文章

  1. 1

    在 cython 类上使用手动 deepcopy 会导致内存溢出。为什么?

  2. 2

    为什么bash的提示变量称为PS1?

  3. 3

    为什么我应该使用$ cacheFactory而不是手动获取/设置数据?

  4. 4

    为什么TFS合并会自动合并文件,而不是提示我手动合并文件?

  5. 5

    为什么调用由for循环创建的lambda短链会导致RecursionError,但如果手动创建则正常工作?

  6. 6

    bash PS1设置

  7. 7

    Oracle SQL - 为什么我要手动删除“NOT NULL”约束而不是使用“修改”?

  8. 8

    为什么手动设置时间与当前时间不同

  9. 9

    为什么更新替代设置为“手动”模式?

  10. 10

    为什么手动设置时间与当前时间不同

  11. 11

    为什么没有提示手动输入pthread_mutex_lockerror?

  12. 12

    为什么电子表格会导致 Excel 每隔一分钟停止响应?没有宏,手动计算

  13. 13

    如何从bash $ PS1设置变量

  14. 14

    在bash PS1中设置变量

  15. 15

    如何从bash $ PS1设置变量

  16. 16

    Bash:PS1 vs Prompt 命令来设置提示和标题

  17. 17

    使用cloudformation创建的AWS中手动更新的堆栈将来会导致冲突吗?

  18. 18

    手动提交symfony表单会导致CSRF错误

  19. 19

    如何使用手动设置的 RSA 参数加密和解密字符串?为什么 RSACryptoServiceProvider 抛出?

  20. 20

    为什么最近的Ubuntu 14.04更新会弄乱我的PS1提示?

  21. 21

    在PS1中使用echo -e会导致Shell中出现换行问题

  22. 22

    更新bash函数中的变量并在提示符(PS1)中使用它

  23. 23

    使用自定义PS1提示时Bash覆盖第一行

  24. 24

    为什么手动挂载设置了不同的文件所有权?

  25. 25

    为什么在Windows 10中将“ Windows Time”服务始终设置为“手动”?

  26. 26

    如何使用Dockerfile设置$ PS1?

  27. 27

    正确获取动态bash提示PS1

  28. 28

    Bash提示(PS1)损坏并产生错误

  29. 29

    Bash提示特殊字符未在PS1中扩展

热门标签

归档