Jos*_*gan 2 bash ssh zsh tmux raspbian
我已经为此苦苦挣扎了几个小时,它\xe2\x80\x99让我发疯。当我通过 SSH 连接到家里的机器时,我的默认 shell 是 zsh。我可以用 来确认这一点echo $SHELL,它输出/usr/bin/zsh
当我从 zsh 调用 tmux 时,它会将我带入带有 bash shell 的 tmux 窗格。如果我运行echo $SHELL,它会输出/bin/bash. 如果我然后运行chsh -s /usr/bin/zsh <user>, $SHELL 变量实际上不会更新并且仍然输出\\bin\\bash。
我\xe2\x80\x99m 从 tmux 手册页中知道默认 shell 是在 ~/.tmux.conf 文件中设置的,我\xe2\x80\x98也这样做了,但似乎没有效果。I\xe2\x80\x99ll 在这里包含我的相关配置文件。
\n\n我应该提到,我的 .tmux.conf 中的其他配置正在生效;我的按键绑定工作,颜色匹配等。 Can\xe2\x80\x99t 弄清楚,非常感谢任何帮助。
\n\n硬件是运行最新版本的 raspbian 的 Raspberry Pi 4。
\n\n〜/.tmux.conf:
\n\nunbind C-b\nset-option -g prefix C-q\nbind-key C-q send-prefix\n\nbind h split-window \nbind v split-window -h\n\n#set-option -g pane-border-fg colour235 #base02\n#set-option -g pane-active-border-fg colour240 #base01\n\nset -g default-terminal screen-256color\nset -g status-keys vi\nset -g history-limit 10000\n\nsetw -g mode-keys vi\nsetw -g monitor-activity on\n\nbind-key -r J resize-pane -D 5\nbind-key -r K resize-pane -U 5\nbind-key -r H resize-pane -L 5\nbind-key -r L resize-pane -R 5\n\nbind-key -n M-K resize-pane -U 5\nbind-key -n M-J resize-pane -D 5\nbind-key -n M-H resize-pane -L 5\nbind-key -n M-L resize-pane -R 5\n\n# Shift arrow to switch windows\nbind -n M-N previous-window\nbind -n M-M next-window\n\nset -sg escape-time 0\n\n# Smart pane switching with awareness of Vim splits.\n# See: https://github.com/christoomey/vim-tmux-navigator\nis_vim="ps -o state= -o comm= -t \'#{pane_tty}\' \\\n | grep -iqE \'^[^TXZ ]+ +(\\\\S+\\\\/)?g?(view|n?vim?x?)(diff)?$\'"\nbind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"\nbind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"\nbind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"\nbind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"\nbind-key -n C-\\ if-shell "$is_vim" "send-keys C-\\\\" "select-pane -l"\n\nset -g status-bg "black"\nset -g status-fg "white"\nRun Code Online (Sandbox Code Playgroud)\n\n~/.zshrc 是一个好的措施:
\n\n# OMZ home directory\nexport ZSH=/home/joe/.oh-my-zsh\n\n# Set OMZ theme\nZSH_THEME=spaceship\nSPACESHIP_CHAR_SUFFIX=\' \'\nSPACESHIP_HOST_SHOW=always\nSPACESHIP_USER_SHOW=always\nSPACESHIP_PROMPT_ORDER=(\nuser # Username section\nhost # Hostname section\ndir # Current directory section\ngit # Git section (git_branch + git_status)\nexec_time # Execution time\nbattery # Battery level and status\nvi_mode # Vi-mode indicator\njobs # Background jobs indicator\nexit_code # Exit code section\nchar # Prompt character\n)\n\n# Couple OMZ settings\nCOMPLETION_WAITING_DOTS="true"\nplugins=(git sudo wd tmux)\n\n# Source OMZ file, needs to be *before* other aliases\nsource $ZSH/oh-my-zsh.sh\n\n# Fixes some undesirable behavior in Termite with OMZ\nexport LC_CTYPE="en_US.UTF-8"\nexport ANDROID_HOME="/home/joe/Android/Sdk/"\n\n# User Specified Aliases\nalias ekeymap="vim /home/joe/qmk_firmware/keyboards/ergodox_ez/keymaps/josephemorgan91"\nalias rename=perl-rename\nalias zconfig="vim ~/.zshrc"\nalias zsource="source ~/.zshrc"\nalias ls="ls --color=auto"\nalias la="ls -a --color=auto"\nalias ll="ls -la --color=auto"\nalias keyswapper="~/Scripts/keyswapper"\nalias sheader="~/Scripts/student_header.sh"\nalias ctags="ctags -R -f ./.git/tags ."\nalias tmux="tmux -u"\nalias R="R --quiet"\nalias update-grub="sudo zsh ~/Scripts/update-grub"\nalias vimconfig="vim ~/.vimrc"\nalias emacs="emacs -nw"\n\n# Setup folder for dev\n alias cconfig="cp ~/Scripts/ycm_c_config ./.ycm_extra_config.py"\n alias gitignore="cp ~/.dotfiles/.gitignore ./.gitignore"\n alias readme="cp ~/.dotfiles/.README_TEMPLATE ./README"\n alias gogit="readme & gitignore & git init"\n\n set_wallpaper() {\n echo "Setting wallpaper: $PWD/$1\\n"\n ln -s -f -v $PWD/$1 /home/joe/.wallpaper.jpg\n ln -s -f -v $PWD/$2 /home/joe/.wallpaper-lh.jpg\n feh --bg-scale $PWD/$2 --bg-scale $PWD/$1\n }\n\n# Uses xclip application to pipe output to clipboard.\n# Usage - $ cat /path/to/a/file | xclip\n# Works on any utility that produces output\nalias xclip="xclip -selection c"\n\nexport EDITOR=\'vim\'\n\nexport term="xterm-256color"\n\n# if command -v tmux>/dev/null; then\n# [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux\n# fi\n\nstty -ixon\n\nxset r rate 200 45\nRun Code Online (Sandbox Code Playgroud)\n
解决方案是将以下行添加到 .tmux.conf 中
set-option -g default-shell /bin/zsh
Run Code Online (Sandbox Code Playgroud)
愚蠢的是我肯定知道这一点并且实际上确实添加了该行,但我似乎没有保存文件或在这样做后没有重新启动服务器。当我第二天连接时,一切开始正常工作。