我希望每个 VSCode 工作区都有不同的 bash 历史记录。似乎设置:
"terminal.integrated.env.linux": { "HISTFILE": "${workspaceFolder}/.bash_history" ...
会非常危险。
... 迟早你会在公开的存档或存储库中泄露一些机密命令。在多用户计算机上,只要你切换到另一个用户的目录并在那里运行一些命令,他们就可以修改你的文件,并可能获得你帐户的后门。而其他用户或你下载存档的人可以通过将命令注入你的 shell 历史记录中,轻松地诱骗你运行命令。
– Gilles ‘所以,别再作恶了’ 评论于 2016 年 8 月 24 日 23:15
即将历史记录保存到您的工作区是不好的,因为您将使用秘密(密码,密钥等)运行命令,并且您会在某个时候将您的历史记录泄露到目录 tar 或 docker 镜像中,即使它在您的 git ignore 中。
我发现的一种方法:
- 要点:DeveloperChris/LocalHistoryVSCODE.md在 Visual Studio Code 中创建每个项目/文件夹历史文件 - VSCODE
另一种方法——设置
HISTFILE
如下terminal.integrated.env.linux
:${env:HOME}/history
您喜欢的安全文件夹在哪里。优点:
缺点:
${env:HOME}/history/.bash_history_${workspaceFolderBasename}
如果你不希望有任何重复的存储库名称,你可以使用类似的方法来缩短路径还要注意,由于它是针对每个系统而不是 shell,因此使用相同环境的所有 shell 都将写入同一个文件,这可能既是优点也是缺点,具体取决于 shell 和用法 - 例如,如果您使用 将 Bash 调整为 ZSH
HISTTIMEFORMAT
。并且,为了避免这种情况,您始终可以编辑terminal.integrated.profiles.linux
特定 shell 的和环境。为了更智能地实现这一点,我们需要比 vscode 设置中更多的逻辑。
在您的用户全局中
settings.json
:在您的
.bashrc
(编辑以满足您的需要):我决定让历史文件易于查找并唯一地标识工作区。我检查了所有 git 存储库,
~/code
所以我知道将历史文件写入该目录与写入目录一样安全~
。第二个“if”将历史文件的范围设置为仅此目录中的工作区。但它不能~/code/big-proj/sub-proj
作为工作区打开。不过,这只是我第一次找到我想要的东西。将第二个“if”更改为适合您的内容。简单地删除它是不明智的。并根据您的需要进行更改
HISTFILE
。它是 bash,因此您可以做任何您愿意忍受的事情。您可以创建对工作区整个路径进行编码的文件名,并使用一个目录来存放所有历史文件。或者使用简单的文件名并接受来自具有相同名称的多个文件夹/工作区的冲突。只需记住 OP 的安全警告。