-n (std を /dev/null からリダイレクトする) と -t (疑似 tty 割り当てを強制する) を追加することで、これを修正しました
例:
ssh -t -n [email protected] command
問題は確かに私のログイン スクリプトにありましたが、端末が必要なこととは関係ありません (私はそれを疑って -t
でテストしました)。 と -T
オプション)。問題は、私の .bashrc
exec
を実行していました (この場合は zsh
まで) - システムで chsh
が許可されていないため zsh
まで ).
問題のある行:
test -f /usr/bin/zsh && exec /usr/bin/zsh
最初に対話型シェルをチェックし、そうであれば終了することで解決:
[ -z "$PS1" ] && return
test -f /usr/bin/zsh && exec /usr/bin/zsh
つまり、基本的に、シェルは zsh
に実行していたためです 、 ssh
これが終わるのを待っていました - それは決して起こりませんでした.
.bashrc
の理由が少しわかりません はまったく呼び出されていませんでした - これは対話型シェル専用だと思っていましたが、さまざまな init スクリプトの正確な目的と順序は、私が学ぶことはないと思います.
これがある種の exec
を持っている他の人に役立つことを願っています
ところで-他の2つの回答は正しい軌道に乗っていたので、「回答」する必要があるのか 、回答にコメントするだけなのか完全にわかりませんでした。スタックオーバーフローで自分の質問に答えることが道徳的に間違っている場合は、お知らせください。悔い改めます。他の回答者に感謝します。