刚接触 Bash 脚本,想整理一下屏幕。我有多个终端窗口在运行单独的进程,但都具有相同的窗口标题。使用以下命令我可以更改标题。一切都很好:
PS1='\[\e]0;TEST TITLE HERE: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'
如果我将其放在脚本中,它不起作用:
#! /bin/bash
PS1='\[\e]0;TEST TITLE HERE: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'
我没有意识到脚本的哪些元素,导致我无法完成我想做的事情?
非常感谢
答案1
现在 OP 在他的 PS1 中发生了很多事情,下面我删除了其中的主要部分,以创建尽可能简单的文本 - 并解决实际问题。
使用 bash FUNCTION 您可以获得
与使用脚本 ( source script.sh
) 相同的效果。
$ man bash
,然后输入/^FUNCTIONS
,获取有关 bash 函数的信息。
例如,
将其放在.bash_aliases
函数 setps1 { PS1="\[\e]0;$1 \a\]$ " }
然后每个 bash 都有可用的 setps1 函数...因此
$ type -a setps1
将打印
setps1 是一个函数 设置1() { PS1="\[\e]0;$1 \a\]$ " }
并且
$ setps1 "Working in \\w"
......确实会将窗口标题设置为“在 <cwd> 中工作”
即Working in Projects
当你进入 ...anything/Projects/ 时,
它会跟随你的移动。