WSL(ubuntu22.04) からubuntu22.04にscpでファイル転送できない?
scp -r -vvv source_dir/ user@ip_adress:/distination_dir
上記を実行しても debug1: Exit status -1
で終了してしまう。
対処法: サーバーの.bashrcを編集する
自分の場合、IntelOneAPI用の環境設定のためのshell scriptをで実行するよう、下記のようなコマンドがサーバー側の.bashrcに書き込まれている
source /opt/intel/oneapi/setvars.sh
コメントアウトを外すところ
下記のcase ~~~~ esacのコメントアウトを外しらうまくいくようになった。
# If not running interactively, don't do anything
# case $- in
# *i*) ;;
# *) return;;
# esac
上記を有効化することで、シェルが対話型モード(interactive)で実行されていない場合(scpやrsyncコマンドはコレ)、何も実行しないようできるらしい。
このようにしなければいけない理由は、ChatGPT4さんによると、下記のような感じらしいです:
サーバーの .bashrc ファイルを確認すると、最後の部分に source /opt/intel/oneapi/setvars.sh という行があります。これは Intel OneAPI の環境変数を設定するためのスクリプトを実行しています。これがSSHセッションやrsyncセッションの際に実行されると、予期しない出力が発生し、非インタラクティブセッションの実行に影響を与える可能性があります。
参考にしたサイトにもbashrc に echo コマンドがあると scp の挙動がおかしくなるとあります。
感想
linux初心者な自分にとっては「はぇ~」という感じでした。
勉強になりました。