要手动打补丁,我必须输入这个命令
sudo ./playback_delete_data_patch.sh 09_delete_old_data_p.sql
Run Code Online (Sandbox Code Playgroud)
09之前有一个空格:
sudo ./playback_delete_data_patch.sh [space] 09_delete_old_data_p.sql
Run Code Online (Sandbox Code Playgroud)
如何在脚本中运行它?
还有其他几个命令,但这个命令有问题。
问题
在 bash 脚本中,我正在使用命令...
sudo -u node bash
Run Code Online (Sandbox Code Playgroud)
.. 从 root 切换到非 sudo 用户,这是失败的。
上下文
我写一个provision.sh为流浪脚本,建立运行Ubuntu 16.04.3的所有包的服务器需要与流星1.6提供的应用程序。
一个必需的步骤是以nvm非 root 用户身份安装。nvm安装完成后,您需要注销并重新登录才能激活nvm。因此,我创建了一个名为 的非 sudo 用户meteor,并希望在下载和安装nvm.
随后,我想切换回 beroot并立即登录为meteor,以便开始使用nvm安装 Node.js。
你会在下面找到一个被大量评论的脚本。每次我调用 Vagrant 时都会运行这个脚本vagrant reload --provision。
我应该使用什么命令而不是sudo -u node bash?
echo "# whoami" && whoami && echo "^^^^ root expected"
echo "As root, create non-sudo user meteor:"
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password) …Run Code Online (Sandbox Code Playgroud) 我想要的是找到运行 bash 脚本的用户的名称,当这个脚本由sudo. 据我所知,唯一可能的方法是以这种方式解析who -m( who am i)的输出:
user@UbuntuServer:~$ cat who.sh
#!/bin/sh
whoami
echo $USER
who -m | awk '{print $1}'
user@UbuntuServer:~$ sudo ./who.sh
root
root
user
Run Code Online (Sandbox Code Playgroud)
问题是:在 Ubuntu Desktop 16.04.4 who -m(resp. who am i) 中什么都不做。为什么?
另一个问题是为什么 Ubuntu 的在线手册页与在 Ubuntu 桌面或服务器上执行who不同man who?
但根据我的目标,这些问题并不是那么重要。正如标题中提到的,主要问题是:我如何找到哪个用户在使用时执行脚本sudo?
实际上,原始标题 -如何在 Ubuntu 桌面上找到“我是谁”?- 是相同但错误地提出的问题。