在单个会话中运行VSCode任务

时间:2019-08-01 08:29:07

标签: linux terminal visual-studio-code root sudo

我想将本地部署命令迁移到VSCode任务。我需要以超级用户身份运行它们。当我在终端中进行密码输入时,系统仅要求我输入一次密码。

$ sudo echo hello                                                                                                                                                                                                                                                        
[sudo] password for pt12lol: 
hello
$ sudo echo hello                                                                                                                                                                                                                                                        
hello

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

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Hello task",
            "type": "shell",
            "command": "sudo echo hello"
        }
    ]
}

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

> 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.

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

1 个答案:

答案 0 :(得分:-1)

我也遇到了这个问题,this这个问题帮助了我。在Linux中,您无法将密码显式传递给sudo,但是有很多解决方法。

echo password | sudo -S command

将使用password参数将-S用管道传输到sudo中。来自sudo man page

  

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

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

{
    {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Hello task",
            "type": "shell",
            "command": "echo password | sudo -S echo hello"
        }
    ]
}