我想将本地部署命令迁移到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.
是否可以设置任务部署,以便保留最后的会话并且不要求我输入密码?
答案 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"
}
]
}