從 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。

相關內容