私は最近、端末を見て楽しむために素晴らしいSolarized色に対応するためにPS1変数を変更することにしました。 tmuxセッションではないときは、すべてがうまくいきます!虹、ポニー、ユニコーン、そしてユニークなヒント!クール!
しかし、問題はtmuxにあります。 PS1の値が正確に私が期待した値で、tmuxが実行されていないときと同じかどうか、つまり\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
。
私の.bash_profileのすべてのエイリアスなども期待どおりに実行されます。 tmuxは色を正常に表示し、echo -ne "\033[1;33m hi"
期待どおりに機能しますgls --color
。
私の.bash_profileの現在の関連行はですexport PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
。もともと、いくつかの条件などを処理するために.bash_promptファイルからスクリプトをインポートしていましたが。もっとシンプルなバージョンに戻ってみました。
実行するとbash
プロンプトの色が表示されますが、各ウィンドウで実行する必要があります。export PS1=[that long string I've already posted]
しないでしょう。
私の.tmux.confは次のようになります。
set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
.bash_profile 関連部分:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
私はmacOS Sierra、iTerm 2を使用していますが、現在のホームブルーバージョンのbashとシステムbash(現在のホームブルーバージョンを使用)tmux 2.4の両方を試してみました。
また、touch testing_touch_from_bash_profile
2つのウィンドウを持つtmuxセッションに.bash_profileを配置し、1つのウィンドウを終了して1つを開き、ファイルが実際に作成されたことを確認しました。
echo $TERM
返品xterm-256color
。
設定変更をテストするためにtmuxを終了すると、tmuxを終了し、現在のtmuxプロセスがps -ax | grep tmux
。
奇妙なことは、.bash_promptスクリプトをインポートすると、すべてのtmuxウィンドウでこれを行うたびに色も変わることです。
私は見たことがないhttps://stackoverflow.com/questions/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-wそして、.tmux.confの最初の行でbash呼び出しの後に--loginフラグを追加してみてください。 tmux を起動すると、tmux new bash
最初のウィンドウは色調化されますが、後続のウィンドウは色調化されません。
$PS1変数は、フィールドの色を除くすべての部分で尊重されているようです。
誰にもアイデアがありますか?
答え1
私のコンピュータにソリューションを追加することでした。
set -g default-terminal "xterm-256color"
到着する~/.tmux.conf
。
答え2
この問題に対する私の解決策は次のとおりです。
force_color_prompt=yes
私の.bashrc
。今私のtmuxプロンプトに色があります。
答え3
PS1は白黒出力も提供します。
しかし、私に戻すと色が表示されるので、私が使用した違いを見つけることができます。
$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$
git_branchは私のbash機能です。
git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
あなたと私のもの:
これはOSXとUbuntuでも同じように機能します。
答え4
Ubuntu 20.04の使用中にこの問題が発生しました。
しかし、バンキーの答えsource ~/.bashrc
私のために働いたが、ログインするたびに常に特定する自分自身を見つけました。マルチプレクサシェルは次のとおりです。評価済みのコメント。
私が解決した方法は次のとおりです。:
.tmux
まず~/.tmux.conf
。
次に、使用したい設定を入力してください。マルチプレクサ入れて保存してください。私には次の構成が必要でした。GNU画面Ubuntuはデフォルトでパッケージを使用するので、ファイルの内容を~/.bashrc
その~/.tmux.conf
ファイルにコピーしました。これにより、構成を編集する必要がある場合マルチプレクサ、私はこれを操作しませんGNU画面。
ノート~/.bashrc
:興味の分離に興味がない場合は、この手順をスキップしてこのファイルを使用してください。
~/.bash_profile
次に、ファイルを~/.bash_login
ファイルに追加します~/.profile
。ファイルの下部に以下を追加する必要があります。
source "$HOME/.tmux.conf"
または
source "$HOME/.bashrc"
例は次のとおりです。
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
source "$HOME/.tmux.conf"
ノート:~/.bash_profile
ファイルが最初、~/.bash_login
ファイルが2番目、ファイル~/.profile
が最後です。
それはすべてです。
これが役に立つことを願っています