Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么sudo-i需要一个绝对路径来运行脚本?_Linux_Bash_Sudo - Fatal编程技术网

Linux 为什么sudo-i需要一个绝对路径来运行脚本?

Linux 为什么sudo-i需要一个绝对路径来运行脚本?,linux,bash,sudo,Linux,Bash,Sudo,使用sudo运行bash脚本时,sudo-i似乎需要绝对路径 -i, --login 为什么会这样?我如何使sudo-I引用与sudo相同的路径 编辑 sudo-i~/tmp.sh运行良好 似乎sudo-i没有获得位置 sudo-我似乎需要一条绝对路径 -i, --login 不,没有。您可以相对于新位置执行以下操作,即到/root: [USER@HOST ~]$ sudo ./tmp.sh Script run successfully. [USER@HOST ~]$ sudo -

使用sudo运行bash脚本时,
sudo-i
似乎需要绝对路径

 -i, --login
为什么会这样?我如何使
sudo-I
引用与
sudo
相同的路径


编辑

sudo-i~/tmp.sh
运行良好

似乎
sudo-i
没有获得
位置

sudo-我似乎需要一条绝对路径

 -i, --login
不,没有。您可以相对于新位置执行以下操作,即到
/root

[USER@HOST ~]$ sudo ./tmp.sh
Script run successfully.

[USER@HOST ~]$ sudo -i ./tmp.sh
-bash: ./tmp.sh: No such file or directory

[USER@HOST ~]$ sudo -i /home/USER/tmp.sh
Script run successfully.
也应该有效

为什么会这样

因为您将
-i
传递给
sudo
man sudo
它会:

[…]sudo试图在运行shell之前更改到该用户的主目录。[……]

我怎样才能使sudo-我指的是与sudo相同的路径

将根主目录更改为当前目录(ugh!)

不要通过
-i
选项。好。。。您可以自己运行
bash-l

并更改
-i
选项的行为

请注意,不允许同时将
-E
-i
传递到
sudo

sudo-i~/tmp.sh运行良好

是的,因为在运行sudo之前,
~
已展开。这与使用绝对路径运行sudo是一样的

 -i, --login

sudo-i
尝试更改到用户的主目录。尝试
sudo-ipwd
$ set -x
$ sudo -i ~/tmp.sh
+ sudo -i /home/kamil/tmp.sh
-bash: line 1: /home/kamil/tmp.sh: No such file or directory