AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1874644
Accepted
plswork04
plswork04
Asked: 2025-01-31 06:57:58 +0800 CST2025-01-31 06:57:58 +0800 CST 2025-01-31 06:57:58 +0800 CST

Como ter .bash_history diferentes por espaço de trabalho do Visual Studio Code?

  • 772

Gostaria de ter um histórico de bash diferente por workspace do VSCode. Parece que está definindo:

"terminal.integrated.env.linux": { "HISTFILE": "${workspaceFolder}/.bash_history" ...

seria super perigoso.

Crie um log de histórico por diretório de trabalho no bash

... Mais cedo ou mais tarde você vai vazar alguns comandos confidenciais em um arquivo ou repositório exposto publicamente. Em uma máquina multiusuário, assim que você muda para o diretório de outro usuário e executa alguns comandos lá, eles podem modificar seus arquivos e provavelmente ganhar um backdoor para sua conta. E outros usuários, ou pessoas cujos arquivos você baixa, podem facilmente enganá-lo para executar comandos, injetando-os em seu histórico de shell.

– Gilles 'SO- pare de ser mau' Comentado em 24 de agosto de 2016 às 23:15

Salvar o histórico no seu espaço de trabalho é ruim porque você executará comandos com segredos (senhas, chaves, etc.) e vazará seu histórico para um diretório tar ou imagem do docker em algum momento, mesmo que esteja no seu git ignore.

Uma abordagem que encontrei:

  • Gist: DeveloperChris/LocalHistoryVSCODE.md Criação de arquivos de histórico por projeto/pasta no Visual Studio Code - VSCODE
bash
  • 2 2 respostas
  • 41 Views

2 respostas

  • Voted
  1. Destroy666
    2025-01-31T08:17:05+08:002025-01-31T08:17:05+08:00

    Uma abordagem alternativa - definida HISTFILEcomo terminal.integrated.env.linuxalgo como:

    ${env:HOME}/history${workspaceFolder}/.bash_history
    

    onde ${env:HOME}/historyestá uma pasta segura de sua preferência.

    Vantagens:

    • funciona com espaços de trabalho configurados em qualquer lugar, mantendo-se seguro
    • mais fácil de configurar sem editar a(s) configuração(ões) do shell

    Desvantagens:

    • um pouco mais difícil de acessar, você pode usar algo como ${env:HOME}/history/.bash_history_${workspaceFolderBasename}, se não esperar nomes de repositório duplicados, para encurtar os caminhos

    Observe também que, como é por sistema, não por shell, todos os shells que usam o mesmo env escreverão no mesmo arquivo, o que pode ser uma vantagem e uma desvantagem dependendo dos shells e do uso - por exemplo, se você ajustar o Bash para ZSH com HISTTIMEFORMAT. E, para evitar isso, você sempre pode editar terminal.integrated.profiles.linuxe envs para shells específicos.

    • 1
  2. Best Answer
    plswork04
    2025-01-31T06:57:58+08:002025-01-31T06:57:58+08:00

    Para sermos inteligentes sobre isso, precisaremos de mais lógica do que a que pode ser incluída nas configurações do vscode.

    No seu usuário global settings.json:

    "terminal.integrated.env.linux":  {"VSCODE_WS": "${workspaceFolder}"},
    "terminal.integrated.env.windows":{"VSCODE_WS": "${workspaceFolder}"},
    "terminal.integrated.env.osx":    {"VSCODE_WS": "${workspaceFolder}"},
    

    Em seu .bashrc( Editar para atender às suas necessidades ):

    # Enable separate bash history per workspace: 
    # Assume the following is in vscode settings:
    # "terminal.integrated.env.linux": { "VSCODE_WS": "${workspaceFolder}"  },
    
    # When in filemode / not in a workspace, `VSCODE_WS` is set to the literal `${workspaceFolder}` so we check and ignore that
    if [[ -v VSCODE_WS ]] && [[ "$VSCODE_WS" != '${workspaceFolder}' ]]; then
    
        # Only change history file if we know it will be written to a safe place
        if [[ "$(dirname "${VSCODE_WS}")" == "$HOME/code" ]]; then
            HISTFILE="${VSCODE_WS}/../.bash_history_$(basename "${VSCODE_WS}")"
            
            # Write to history after every command
            shopt -s histappend
            # Avoid adding duplicate commands
            if [[ ! "$PROMPT_COMMAND" =~ "history -a" ]]; then
                #echo set PROMPT_COMMAND
                PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
            fi
        fi
    fi
    

    Decidi que os arquivos de histórico seriam encontrados facilmente e identificariam exclusivamente os espaços de trabalho. Eu verifico todos os meus repositórios git para ~/codesaber se escrever arquivos de histórico naquele diretório será mais ou menos tão seguro quanto escrever em ~. O segundo escopo 'if' define o arquivo de histórico apenas para espaços de trabalho neste diretório. No entanto, não funcionará para abrir ~/code/big-proj/sub-projcomo um espaço de trabalho. No entanto, tudo é apenas minha primeira tentativa de encontrar o que quero.

    Altere o 2º 'if' para algo que funcione para você. Simplesmente removê-lo não seria sensato . E altere HISTFILE para atender às suas necessidades. É bash, então você pode fazer qualquer coisa que esteja disposto a tolerar. Você pode criar nomes de arquivo que codifiquem o caminho inteiro para o espaço de trabalho e usar um diretório para todos os arquivos hist. Ou use nomes de arquivo simples e aceite conflitos de várias pastas/espaços de trabalho com o mesmo nome. Apenas mantenha o aviso de segurança do OP em mente.

    • 0

relate perguntas

  • substituindo zsh por bash no usuário não root

  • Tendo problemas para definir variáveis ​​de ambiente no Terminal no macOS High Sierra

  • Existe um equivalente a cd - para cp ou mv?

  • Notificar-enviar notificações aparecendo na janela

  • como abrir um arquivo de escritório do WSL

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve