web-dev-qa-db-ja.com

tmux内で `zsh-newuser-install:起動ファイルが存在し、中止します`で起動するとzshがクラッシュします

zsh内でtmuxを開始しようとするたびに、wwithでクラッシュします

zsh-newuser-install:  startup files exist, aborting

昨日の夜は完璧に機能しましたが、今朝突然、何も機能しなくなりました...

.zshrcの最初の行としてこの行でtmuxを開始しています:

if [ "$TMUX" = "" ]; then tmux; fi

ありがとう!

私のzshrcファイル: https://github.com/Richard87/oh-my-zsh/blob/master/templates/zshrc.zsh-template

[〜#〜]編集[〜#〜]

突然再び動作を開始しました...何が変わったのか、何が間違っているのかわかりません...スクラッチ、再び動作を停止しました

編集#2

同じコンピューターでrootユーザーに対しては機能しますが、メインユーザーに対しては機能しません(.zshrcファイルはまったく同じです。唯一異なるのは、自分のユーザーがカスタムtmux構成ファイルを持っていることです。

# set Zsh as your default Tmux Shell
set-option -g default-Shell /bin/zsh

# Tmux should be pretty, we need 256 color for that
set -g default-terminal "screen-256color"


# Tmux uses a 'control key', let's set it to 'Ctrl-a'
# Reason: 'Ctrl-a' is easier to reach than 'Ctrl-b'
set -g prefix C-a
unbind C-b

# command delay? We don't want that, make it short
set -sg escape-time 1

# Set the numbering of windows to go from 1 instead
# of 0 - silly programmers :|
set-option -g base-index 1
setw -g pane-base-index 1


# Allow us to reload our Tmux configuration while
# using Tmux
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# Getting interesting now, we use the vertical and horizontal
# symbols to split the screen
bind | split-window -h
bind - split-window -v
9
Richard87

これは、起動後、スタンドアロン端末を開く前にIntelliJ内の端末を開いたときに発生します。

  • 最初にスタンドアロン端末を開くと、スタンドアロン端末とIntelliJ端末の両方が正常に機能します。
  • 最初にIntelliJの端末を開くと、スタンドアロン端末とIntelliJ端末の両方で次のメッセージが表示されません。zsh-newuser-install: startup files exist, aborting

これに対して私が見つけた唯一の回避策は次のとおりです。

  1. すべてのターミナルを閉じてスタンドアロンターミナルを開きます。メッセージは表示されません。次にこれが開いている間、IntelliJターミナルを開くと、問題は発生しなくなります。
  2. 最初にスタンドアロンターミナルを開いたために機能しない場合があります。その場合、@ rghamilton3が提案することを行います:tmux kill-serverそしてもう一度#1を実行します。
8
MondKin

私はこれが古いことを知っていますが、それについての新しいコメントを見ました。 tmux kill-serverを実行してサーバーを強制終了しましたが、驚くべきことに、サーバーは修正されました。 YMMVはもちろんですが、うまくいけばそれは他の誰かを助けるでしょう。

5
rghamilton3

まず、zsh-newuser-install関数shouldは、次の場合にのみ実行されます。

1)ユーザーが個人的なzshスタートアップファイル(.zshrcなど)を持っていない

2).zshrcファイルに次の行が表示されている場合:

autoload -Uz zsh-newuser-install
zsh-newuser-install -f

3)同じコマンドを手動で実行した場合。

念のため、.zshrcファイルを確認します。うまくいけば、これはあなたに探し始める場所を与えるでしょう。

個人的には、.zshrcファイルの最初の行にtmuxコマンドを入れませんが、それは私の個人的な意見です。 TMUX変数を使用することは、tmuxがすでに実行されているかどうかを判断するための最良の選択ではないと思います。変数TMUXを設定するには、tmuxウィンドウ/ペインで実行されているシェルを起動する必要があります。の結果 tmux ls私の意見ではより良い選択でしょう。

Var=("${(f)$(tmux ls)}")
[ ${#Var} -eq 0 ] && tmux

私はあなたのユースケースを知らないので、あなたはこの方法を選ばないかもしれません。

1
Friartek