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
Uma abordagem alternativa - definida
HISTFILE
comoterminal.integrated.env.linux
algo como:onde
${env:HOME}/history
está uma pasta segura de sua preferência.Vantagens:
Desvantagens:
${env:HOME}/history/.bash_history_${workspaceFolderBasename}
, se não esperar nomes de repositório duplicados, para encurtar os caminhosObserve 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 editarterminal.integrated.profiles.linux
e envs para shells específicos.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
:Em seu
.bashrc
( Editar para atender às suas necessidades ):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
~/code
saber 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-proj
como 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.