为什么最后一个示例会抛出错误,而其他示例却可以工作?在任何情况下都会调用 Bash。
#!/bin/bash
function hello {
echo "Hello! user=$USER, uid=$UID, home=$HOME";
}
# Test that it works.
hello
# ok
bash -c "$(declare -f hello); hello"
# ok
sudo su $USER bash -c "$(declare -f hello); hello"
# error: bash: -c: line 1: syntax error: unexpected end of file
sudo -i -u $USER bash -c "$(declare -f hello); hello"
Run Code Online (Sandbox Code Playgroud) 我有一个 bash shell 脚本,必须以 root 身份运行。如果用户启动它,系统会要求他们输入 root 密码,并且脚本会在子 shell 中重新运行。./$0 &
假设名为“John”的用户启动该脚本。在他提供 root 密码后,脚本将以 root 身份重新运行,但我如何才能知道谁最初从脚本本身启动了该脚本(John)?目前,我正在使用原始启动器转储一个文件,稍后我可以参考该文件,但这很丑陋。
我考虑的其他选项是使用进程列表,但同样,必须有一个更优雅的解决方案。
GNU bash,版本 4.2.45(2)-release (x86_64-slackware-linux-gnu)
我试图在IBM Containers/Bluemix中部署的容器中"su".但它失败了.
root@ubuntu142:/tmp# cf ic exec -it mysshd bash
[root@instance-001652d1 /]# adduser ubuntu
[root@instance-001652d1 /]# su - ubuntu
su: cannot create child process: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)
这在我的本地docker环境中工作正常.我也尝试在启动脚本中使用"su"(用户已定义),但它也失败了相同的消息(来自日志).(实际上,我正在尝试使用"su db2inst1"部署DB2-Express-C ..)IBM容器中是否存在禁止"su"的限制?
提前致谢.
我正在尝试运行一个切换用户的脚本(遵循此答案)。我无法在其中设置变量。我尝试了很多事情,但最基本的是:
sudo -u other_user bash << EOF
V=test
echo "${V}"
EOF
Run Code Online (Sandbox Code Playgroud)
更现实的是,我正在做类似以下的事情:
sudo -u other_user bash << EOF
cd
V=$(ls)
echo "${V}"
EOF
Run Code Online (Sandbox Code Playgroud)
每次我尝试使用该变量时,V它都会被取消设置。如何设置变量?
我正在开发一个Android应用程序,它将一些json文件写入外部存储器.对于开发,我想查看写入的json文件.
我知道我可以使用root访问权限查看这些文件/data/data/package-name/.
但是如何在Android 7.0模拟器上获得root访问权限?
我已经尝试了adb shell中的su命令以及adb root - 但是后来我收到此错误消息: adbd cannot run as root in production builds
也许你有一些建议?