使用 Ubuntu 22.04 运行 Amazon EC2 实例。弹性 IP 地址为 52.120.94.72。
我希望 bash 提示符像这样(没有空格)
[email protected]:~/working_directory$
根据网上的一些建议,我像这样编辑了 /etc/hosts 文件的顶部
127.0.0.1 localhost 52.120.94.72
甚至在 .bashrc 中添加了以下行
export PS1='\[\033[0;32m\]\u@\h:\[\033[36m\]\W\[\033[0m\] \$ '
但它不起作用,目前,bash 提示符看起来像
della@52:~ $
这太荒谬了。如何让它看起来像我想要的那样。另外,$HOSTNAME 环境变量在这种情况下重要吗?特别是,如果我在这个实例中运行一些 Web 服务器,我可以只使用 IP 地址进行调用,对吗?不需要主机名。
答案1
据我所知,让你的提示真正得出 IP 地址相当困难。根据特殊字符列表,Bash 没有提供现成的变量来使用它这里。
我认为最简单的方法就是在提示定义中对您想要看到的 IP 地址进行硬编码:
export PS1='\[email protected]:\w\$'
其中\u
,\$
和\w
是一些特殊字符,它们会被你的 bash shell 根据以下定义进行扩展:这里:
\u
当前用户的用户名。\w
PWD shell 变量的值($PWD
),用$HOME
波浪号缩写~
(使用$PROMPT_DIRTRIM
变量)。\$
如果有效uid为0,#
则为,否则为$
。
使用您引用的示例中的其他转义符:
export PS1='\[\033[0;32m\]\[email protected]:\[\033[36m\]\w\[\033[0m\]\$'
您将获得一个用 ANSI 转义序列/代码格式化的提示,指示您使用的终端程序应用特定的格式和颜色。
看https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences 以获得详细概述。
当然,您可以依靠外部助手来获取您的 IP,例如查询实例元数据 URI:
MY_IP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
export PS1='\u@$MY_IP:\w\$'