我想创建一个。桌面文件,它将打开一个带有提示符的终端,以绿色显示当前时间和当前工作目录。我通过以下命令实现了这一点:
$ PS1="\033[0;32m(\$(date +%H:%M:%S)) \W$ \033[0m"
给出以下提示:
(14:30:12) media$
对于此命令我创建了以下内容。桌面文件:
[Desktop Entry]
Version=1.0
Name=Open Terminal
Comment=Open Terminal with modified Prompt
Exec=bash -c 'export PS1="\033[0;32m(\$(date +%H:%M:%S)) \W$ \033[0m";$SHELL'
Icon=utilities-terminal
Terminal=true
Type=Application
Categories=Application;
我认为我在传递变量时做错了什么,但我不知道具体是什么,你能帮我找出问题所在吗?
这样做的原因是获得几个.desktop
文件,我可以用不同的提示打开不同的终端。
答案1
这是可行的,但可能不是那么常用的解决方案。
故障排除
据我观察,有两个问题:$SHELL
在命令后被调用export PS1
,以及颜色 bash 提示符编码不正确
运行
$SHELL
会创建一个新的提示符。这会导致之前所做的任何操作export PS1
都变得毫无用处,因为新的提示符会覆盖之前的提示符。另一个问题可能是一些拼写错误。我找不到任何理由让单边方括号
[
保持打开状态。
本指南注意到它应该被封闭。
如前所述,非打印转义序列必须包含在
\[\033[
和\]
。对于颜色转义序列,它们后面还应跟一个小写m
。
解决方法
.bashrc
针对不同的配置使用单独的文件PS1
。然后,运行调用bash
另一个选项的文件,bash
使用--init-file
单独的文件运行提示.bashrc
。
请遵循以下步骤。
创建一个具有不同名称的空文件,
.bashrc2
即家目录。在文本编辑器中打开该文件,复制并粘贴以下内容(已修订)。
export PS1="\[\033[0;32m\](\$(date +%H:%M:%S)) \W$ \[\033[0m\]"
保存并关闭文件。
创建另一个具有不同名称的空文件,
shortcut2.desktop
即桌面。在文本编辑器中打开该文件,复制并粘贴以下内容。
[Desktop Entry] Version=1.0 Name=Terminal 2 Comment=Open Terminal with .bashrc2 Exec=bash -c 'bash --init-file $HOME/.bashrc2' Icon=utilities-terminal Terminal=true Type=Application Categories=Application;
保存并关闭文件。
最后,双击快捷方式(现在显示为2 号航站楼在桌面) 来运行提示。
如果有的话,对其他配置重复这些步骤,通过赋予不同的名称,即.bashrc3
,shortcut3.desktop
等等。
无法解释的
单独运行bash --init-file $HOME/.bashrc2
将无法包含PS1
配置。生成的提示将变色并恢复为[\u@\h:\w]$
格式。换句话说,.bashrc2
文件被完全忽略。这就是为什么需要嵌套 shell。