ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Bash-Historie beibehalten

Sie können auch ein Mount verwenden, um Ihren bash-Befehlverlauf über Sitzungen / Container-Neuerstellungen hinweg beizubehalten.

Aktualisieren Sie zuerst Ihre Dockerfile so, dass jedes Mal, wenn ein Befehl in bash verwendet wird, der Verlauf aktualisiert und an einem Ort gespeichert wird, den wir beibehalten werden.

Wenn Sie einen Root-Benutzer haben, aktualisieren Sie Ihre Dockerfile mit dem Folgenden

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

Wenn Sie einen Nicht-Root-Benutzer haben, aktualisieren Sie Ihre Dockerfile mit dem Folgenden. Ersetzen Sie user-name-goes-here durch den Namen eines Nicht-Root-Benutzers im Container.

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"

Fügen Sie als Nächstes ein lokales Volume hinzu, um den Befehlverlauf zu speichern. Dieser Schritt variiert je nachdem, ob Sie Docker Compose verwenden oder nicht.

  • Dockerfile oder Image: Verwenden Sie die Eigenschaft mounts (VS Code 1.41+) in Ihrer devcontainer.json-Datei.

      "mounts": [
          "source=projectname-bashhistory,target=/commandhistory,type=volume"
      ]
    
  • Docker Compose: Aktualisieren Sie (oder erweitern Sie) Ihre docker-compose.yml mit dem Folgenden für den entsprechenden Dienst.

    version: '3'
    services:
      your-service-name-here:
        volumes:
          - projectname-bashhistory:/commandhistory
         # ...
    volumes:
      projectname-bashhistory:
    

Schließlich, wenn Sie den Container bereits erstellt und sich damit verbunden haben, führen Sie **Dev Containers: Rebuild Container** aus der Befehlspalette (F1) aus, um die Änderung zu übernehmen. Andernfalls führen Sie **Dev Containers: Open Folder in Container...** aus, um sich mit dem Container zu verbinden.

Hinweis: Wenn auf Ihrem Host-Computer Linux (einschließlich WSL unter Windows) läuft und die UID und GID Ihres Benutzers nicht mit denen des Benutzers im Entwicklungscontainer übereinstimmen, werden die UID und GID des Entwicklungscontainer-Benutzers an die des Host-Benutzers angepasst und Sie müssen die gleiche Anpassung auf das Volume anwenden, indem Sie Folgendes zu devcontainer.json hinzufügen.

```json
  "postCreateCommand": {
    "Fix Volume Permissions": "sudo chown -R $(whoami): /commandhistory"
  }
```

Video: Wie Sie Ihren Bash-Verlauf in einem Entwicklungscontainer beibehalten

© . This site is unofficial and not affiliated with Microsoft.