bash シェル スクリプトから .bashrc 関数を呼び出す

bash シェル スクリプトから .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 を起動します。

関連情報