在单个会话中运行 VSCode 任务

pt1*_*lol 6 linux terminal sudo root visual-studio-code

我想将本地部署命令迁移到 VSCode 任务。我需要以 root 身份运行它们。当我在终端中执行这些操作时,系统只要求我提供一次密码。

$ sudo echo hello                                                                                                                                                                                                                                                        
[sudo] password for pt12lol: 
hello
$ sudo echo hello                                                                                                                                                                                                                                                        
hello
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我配置 VSCode 任务时:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Hello task",
            "type": "shell",
            "command": "sudo echo hello"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想它在单独的会话中运行每个任务,并且每次都要求我提供密码。

> Executing task: sudo echo hello <

[sudo] password for pt12lol: 
hello

Terminal will be reused by tasks, press any key to close it.

> Executing task: sudo echo hello <

[sudo] password for pt12lol: 
hello

Terminal will be reused by tasks, press any key to close it.
Run Code Online (Sandbox Code Playgroud)

是否可以设置任务部署,以便保留最后的会话并且不需要我输入密码?

joe*_*hmo -2

我也遇到了这个问题,这个问题帮助了我。在 Linux 中,您无法显式地将密码传递给sudo,但有一些方法可以解决这个问题。

echo password | sudo -S command

password使用参数通过管道输入 sudo -S。从sudo 手册页

-S -S (stdin) 选项使 sudo 从标准输入而不是终端设备读取密码。密码后必须跟有换行符。

修改你的代码在我的机器上产生了预期的效果。

{
    {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Hello task",
            "type": "shell",
            "command": "echo password | sudo -S echo hello"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)