環境変数「SSH_PWD」があり、ログアウト前に最後の「パスワード」を復元するにはどうすればよいですか?

環境変数「SSH_PWD」があり、ログアウト前に最後の「パスワード」を復元するにはどうすればよいですか?

研究室では、複数の「Raspberry Pi」マシンが実行されています。Debian スタイルオペレーティングシステムこれは特定の目的を果たします。つまり、SSH接続を確立した後、cd「マイアイテム」があるフォルダにアクセスします。たとえば、現在接続されているデバイスでは、ほとんどの時間がフォルダから送信されます~/pico/ina260_i2c/build

このシステムにSSHで接続すると、ログアウトする前にあったフォルダ、つまり一般的に~/pico/ina260_i2c/build。当然じゃないいつもこの状況がだから連れて行きたいログアウトする前にあったフォルダ

私の質問は、「これを達成するには、システムをどのように構成する必要がありますか?」

私が試したことは次のとおりです。

  1. 私が思ったことを見つけました。完璧私の質問に答えるここ...完璧しかし、動作しません!私は少なくとも1つの問題があることを知り(代わりにssh問題がありました)それを修正しました。それ以外に/usr/bin/ssh/bin/ssh私のためここでの失敗は、SSH_PWD環境変数(から派生したPWD)がログイン後に持続しないことですSSH

    これ〜らしい希望ですが、うまくいきません。

    $ sudo echo "SendEnv SSH_PWD" >> /etc/ssh_config && sudo echo "AcceptEnv SSH_PWD" >> /etc/sshd_config
    # edit ~/.profile to add the following: 
    alias ssh='env SSH_PWD="$PWD" /usr/bin/ssh'
    if [ -n "$SSH_PWD" ]; then   # i.e. -n => non-zero string; 
    cd "$SSH_PWD"
    unset SSH_PWD
    fi
    

    私もPermitUserEnvironment yes設定しようとしました/etc/ssh/sshd_config

  2. 回答に関する他の検索結果はいくつかあります。〜らしい未来はありますが、私はPAMについて全く知らないだから、この解決策を試してもストレスを受けます。

答え1

これらのシステムでは、ログインシェルがbashであると仮定すると、システム構成を編集しなくてもリモート側でこれを完全に実行できます。編集~/.bash_logout(存在しない場合は作成)し、次を追加します。

# Save current directory to a file on logout
printf '%s\0' "$PWD" > ~/.my_previous_session_pwd

~/.bash_profileあなたの(または~/.profile存在するものの1つ)に以下を追加します。

# If the previous session's working directory was saved to file, switch to it
if
  [ -r ~/.my_previous_session_pwd ] &&
    IFS= read -rd '' old_dir < ~/.my_previous_session_pwd &&
    [ -d "$old_dir" ]
then
  cd -- "$old_dir"
fi

関連情報