从 bash shell 脚本调用 .bashrc 函数

从 bash shell 脚本调用 .bashrc 函数

我希望能够命名一个终端选项卡,以便我可以跟踪哪个是哪个。我发现这个功能(这里)并将其放入我的.bashrc

function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}

现在,当我调用set-title my new tab name选项卡名称时,选项卡名称将按预期更改为“我的新选项卡名称”。问题是我想打开一个新选项卡并使用 命名它set-title。我尝试这样做的方式是这样的:

gnome-terminal --geometry=261x25-0+0 --tab -e "bash -c 'set-title tab1; sleep 10'" --tab -e "bash -c 'set-title tab2; sleep 10"

但是,现在我收到以下错误消息:

bash: set-title: command not found

我认为这与新的 gnome 选项卡还不了解该.bashrc功能有关。

我怎样才能让它发挥作用?

答案1

使用函数的瞬间,set-title您可以使用此功能创建命令,因此删除set-title()您添加的函数~/.bashrc并创建一个文件/usr/local/bin/set-title

#!/bin/bash
echo -ne "\033]0;$1\007"

添加 chmod: chmod +x /usr/local/bin/set-title.重新打开终端后,您可以通过以下方式使用此命令:(set-title TEST如果您的/usr/local/bin/$PATH

然后您可以通过以下方式创建新选项卡时使用它:

gnome-terminal --geometry=261x25-0+0 \
    --tab -e "bash -c 'set-title TAB1; sleep 10'" \
    --tab -e "bash -c 'set-title TAB2; sleep 10'"

/usr/local/bin/如果您的 中没有$PATH,您可以尝试使用 set-title 命令的绝对路径:

--tab -e "bash -c '/usr/local/bin/set-title TAB1; sleep 10'"

答案2

如果您希望运行 .bashrc、.bash_profile、.profile 等初始化脚本,请使用--login选项启动 gnome-terminal。

相关内容