脚本切换用户执行
权限不够
1、你看下你的脚本有没有读和执行的权限,用一下命令查看:
ls -trl /home/aaaaa/test.sh
看看出来的 -rw-r--r--. 1 root root 28757 12月 12 09:28 install.log 具体是什么
就像我上卖弄读取出来的这个 install.log 文件一样,他的权限是 对root用户 有读和修改的权限,对root用户组只有 读 的权限,对其他念李局用户也只有读的扰枯权限,那么这个时候 你用其他用户执行,肯定执行不了;
2、看看切换的用户有没有读和执行该脚本的权限;
关于权限这边说就太了多了,如果不懂的话建议自己下去看看;
有个最简单的方法 直接 chmod 777 aaaa.sh 给予aaaa.sh这个脚本所有权限,然后再切换仔让用户后,就可以直接执行了 bash aaaa.sh
❷ Steam快速切换账号,无需软件
购买游戏时,我拥有多个Steam账号,还会在俄区、阿根廷等地打折时购买游戏。
然而,Steam每次只能自动登录一个账号,换账号时还需重新输入密码或安全码,非常繁琐。因此,我希望能实现不同账号的自动切换。
在网上寻找了许多解决方案,但大多是第三方软件,担心账号信息会被上传至网络,于是决定自己编写脚本解决问题,既安全又便捷。
结合网络资料,我编写了以下bat脚本。其原理是,Steam的默认登录账号是存储在注册表中的,然后根据注册表中的账号信息去Steam/config/loginusers.vdf文件中查找对应账号信息。因此,切换用户时,只需修改注册表中的账号信息即可。
以下是实操步骤:
1.新建文件Stream.bat,使用文本编辑器打开并输入以下代码。
2.将代码中10-12行的Account1/Account2/Account3替换为自己的账号,即可实现自动切换账号。
3.若拥有多个账号,可自行添加if行。
PS:请注意,切换的账号必须之前登录过,否则在Steam/config/loginusers.vdf文件中不会有记录,切换后的第一次登录仍需输入密码。
❸ shell脚本,我从root用户切换到普通用户之后,新定义了一个变量,但打印变量的值是空的,怎么回事
在$前面加上转义, echo ${Result1} 替换成echo ${Result1}
这个问题跟root用户切换到普通用户什么的没关系,而是因为你在用here-document的时候,并没有用双引号或单引号将!引用起来,或用转义符将here-document中的元字符$转义,这时候here-document中的文本将被扩展,即参数替换被启用。
你运行一下这段脚本,看看Result1值的变化,就会明白了
#!/bin/bash
Result1="001"
echo "Parameter substitution is enabled"
bash<<EOF
if [ "1" = "1" ];
then
Result1="111";
echo ${Result1};
echo "wr";
fi
EOF
echo "Parameter substitution is disabled"
bash<<EOF
if [ "1" = "1" ];
then
Result1="111";
echo ${Result1};
echo "wr";
fi
EOF
bash<<'EOF'
if [ "1" = "1" ];
then
Result1="111";
echo ${Result1};
echo "wr";
fi
EOF
❹ 脚本 怎么切换linux用户
你在你的shell中输入:su 用户名
su - 表示切换root用户,等同于su root
su是substitute的缩写
你可以搜索linux su
❺ ubuntu脚本中实现切换到root用户执行命令 执行完在切换回来普通用户
想从root用户切回user用户只需执行命令:su user (user是你自己安装时候的用户名),或是直接输入exit,也可Ctrl+D组合键推出
❻ unix脚本中如何切换用户
这个得用 sudo 命令。他在切换用户后,执行完指定命令后自动切回原用户。
echo start
sudo -u user ./some.sh
#执行多个命令把命令写进脚本里。
echo end
❼ SHELL脚本切换用户需输入密码
正常情况下,使用su - username的方式,普通用户切换都需要输入密码的,只有root su的时候才不需要
❽ linux 中如何执行脚本
ash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。
方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:
cd /data/shell
./hello.sh
./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。
方法二:以绝对路径的方式去执行bash shell脚本:
/data/shell/hello.sh
方法三:直接使用bash 或sh 来执行bash shell脚本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊,呵呵……。
方法四:在当前的shell环境中执行bash shell脚本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。