该实验室有几台“Raspberry Pi”机器,它们运行Debian 风格操作系统。它们用于特定目的 - 也就是说,在我建立 SSH 连接后,我cd
会访问“我的东西”所在的文件夹。例如,在我目前连接的那个上,我大部分时间都花在文件夹中~/pico/ina260_i2c/build
。
当我通过 SSH 登录到这台机器时,我希望被带到我注销之前所在的文件夹;即通常到~/pico/ina260_i2c/build
。当然不是这样总是这种情况,这就是为什么我想被带到注销之前我所在的文件夹。
我的问题是,“我如何配置我的系统才能实现这一点?”
这是我尝试过的:
我发现了我以为的完美的回答我的问题这里...完美的但它不起作用!我知道它至少有一个问题(
ssh
是 in/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
假设您的登录 shell 在这些系统上是 bash,您可以在远程端完全完成此操作,而无需编辑任何系统配置。编辑~/.bash_logout
(如果不存在则创建它),然后添加:
# Save current directory to a file on logout
printf '%s\0' "$PWD" > ~/.my_previous_session_pwd
并在您的~/.bash_profile
(或~/.profile
,以存在者为准)中,添加:
# 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