保存 bash 歷程記錄
您也可以使用掛載來跨工作階段/容器重建保存您的 bash
命令歷程記錄。
首先,更新您的 Dockerfile
,以便每次在 bash
中使用命令時,都會更新歷程記錄並儲存在我們將保存的位置。
如果您有 root 使用者,請使用以下內容更新您的 Dockerfile
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
&& echo "$SNIPPET" >> "/root/.bashrc"
如果您有非 root 使用者,請使用以下內容更新您的 Dockerfile
。將 user-name-goes-here
替換為容器中非 root 使用者的名稱。
ARG USERNAME=user-name-goes-here
RUN SNIPPET="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 或映像:在您的
devcontainer.json
檔案中使用mounts
屬性 (VS Code 1.41+)。"mounts": [ "source=projectname-bashhistory,target=/commandhistory,type=volume" ]
-
Docker Compose: 使用以下適用於適當服務的內容,更新(或擴充)您的
docker-compose.yml
。version: '3' services: your-service-name-here: volumes: - projectname-bashhistory:/commandhistory # ... volumes: projectname-bashhistory:
最後,如果您已建置容器並連線到它,請從命令面板 (F1) 執行開發容器:重建容器以套用變更。否則,執行開發容器:在容器中開啟資料夾...以連線到容器。
注意: 如果您的主機執行 Linux(包括 Windows 上的 WSL),且其使用者的 UID 和 GID 與開發容器中的使用者不符,則開發容器使用者的 UID 和 GID 將更新為主機使用者的 UID 和 GID,您需要將以下內容新增至 devcontainer.json,以將相同的更新套用至磁碟區。
```json
"postCreateCommand": {
"Fix Volume Permissions": "sudo chown -R $(whoami): /commandhistory"
}
```