使用 Git Bash 上的最后一个工作目录恢复集成终端会话

Fad*_*hil 5 terminal git-bash visual-studio-code

通常当我们退出终端并重新打开它时,它会恢复我们的终端和选项卡,这是一个很好的功能,但是它也可以恢复我们最后的cwd吗?我认为应该可以,但我无法让它在我的终端上运行。

会话不保存我最后的工作目录 在此输入图像描述

它说session contents restored

之前的目录是.../shop/shop-next,但恢复后它只是.../shop

我希望恢复后和之前一样 ( .../shop/shop-next)

相关设置是:

在此输入图像描述关于设置“持久会话恢复过程”,它说恢复CWD取决于终端是否支持

我不知道 git bash 是否支持此功能,所以这是我的问题:

  1. 有没有办法完成它?(不使用扩展
  2. 什么终端/配置文件/bash 支持此功能。

Kir*_*rby 1

(抱歉,这可能不适合您,因为您使用选项卡,但可能会给您带来一些改进的想法。)

我使用了一些技巧,我将更改的目录的路径写入文件中,并在会话加载时使用这个保存的路径。

因此,如果我们谈论的是适用于 Windows(或任何类似于 MINGW64)或 *nix 系统的 Git Bash,我在 .bashrc 文件中使用了以下代码:

# == Use changed/default directory on load ==

# Remember changed directory
DEFAULT_DIR=~
cd() { builtin cd ${@} && keep_last_dir; }
keep_last_dir() { pwd > ~/.bashrc.last_dir; }

if [ -z "${BASHRC_INIT}" ]; then
  export BASHRC_INIT=1
  readonly BASHRC_INIT
  change_dir=${DEFAULT_DIR}
  if [[ ${HOME} != $(pwd) ]] && [[ -f ~/.bashrc.last_dir ]]; then
    change_dir=$(cat ~/.bashrc.last_dir)
  fi
  # go to default/prev directory
  [ -d ${change_dir} ] && cd ${change_dir}
fi
# == == == == == == == == == == == == == == ==
Run Code Online (Sandbox Code Playgroud)

您可以更改此行:DEFAULT_DIR=~

第一次打开时,它总是会返回到最后一个目录位置。