研究室では、複数の「Raspberry Pi」マシンが実行されています。Debian スタイルオペレーティングシステムこれは特定の目的を果たします。つまり、SSH接続を確立した後、cd
「マイアイテム」があるフォルダにアクセスします。たとえば、現在接続されているデバイスでは、ほとんどの時間がフォルダから送信されます~/pico/ina260_i2c/build
。
このシステムにSSHで接続すると、ログアウトする前にあったフォルダ、つまり一般的に~/pico/ina260_i2c/build
。当然じゃないいつもこの状況がだから連れて行きたいログアウトする前にあったフォルダ。
私の質問は、「これを達成するには、システムをどのように構成する必要がありますか?」
私が試したことは次のとおりです。
私が思ったことを見つけました。完璧私の質問に答えるここ...完璧しかし、動作しません!私は少なくとも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
。回答に関する他の検索結果はいくつかあります。〜らしい未来はありますが、私は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