本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

持久化bash历史记录

您还可以使用挂载来持久化您的巴什命令历史记录跨会话/容器重建。

首先,更新你的Dockerfile这样每次使用命令巴什历史记录已更新并存储在我们将持久化的地点。

如果你有一个根用户,请更新你的Dockerfile与以下内容:

运行 段落="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
    && echo "$SNIPPET" >> "/root/.bashrc"

如果你有一个非根用户,请更新你的Dockerfile使用以下内容。替换用户名称填写此处 使用 容器中非根用户 的名字。

ARG USERNAME=用户名-替换-这里

运行 段落="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
    && mkdir /commandhistory \
    && touch /commandhistory/.bash_history \
    && chown -R $USERNAME /commandhistory \
    && echo "$SNIPPET" >> "/home/$USERNAME/.bashrc"

接下来,添加一个本地卷来存储命令历史记录。这一步根据你是否使用Docker Compose而有所不同。

  • Dockerfile 或者 image:使用 安装属性 (VS Code 1.41+) 在你的devcontainer.json文件。

      "挂载": [
          "源=项目名称-bash历史记录,目标=/Commands历史记录,类型=卷"
      ]
    
  • Docker Compose: 更新(或 扩展)你的 docker-compose.yml与以下内容的服务相适应。

    版本'3'
    服务
      your-service-name-here
    
          - projectname-bashhistory:/commandhistory
         # ...
    
      projectname-bashhistory
    

最后,如果你已经构建了容器并连接到它,运行 Dev Containers: 重新构建容器 从命令面板 (F1) 中选择更改。否则运行 Dev Containers: 在容器中打开文件夹... 以连接到容器。

注意: 如果您的主机运行的是 Linux(包括 Windows 上的 WSL),并且其用户的 UID 和 GID 与开发容器中的用户不匹配,开发容器用户的 UID 和 GID 将被更新为主机用户的 UID 和 GID,您需要通过在 devcontainer.json 中添加以下内容对卷进行相同的更新。

```json
```
  "postCreateCommand": {
    "修复音量权限": "sudo chown -R $(whoami): /commandhistory"
  }
```

视频:如何让你的bash历史在开发容器中持久化