我创建了一个类似以下名为“/usr/bin/mytool1”的简单脚本并使其可执行。
#!/usr/bin/rlwrap /usr/bin/perl
while (1) {
chomp($cmd = <STDIN>);
print "cmd=$cmd\n";
}
问题是,如果我以普通用户的身份运行它,它工作正常。
然后我做了一个“sudo bash”并以 root 身份运行 mytool1,它也可以正常工作。
现在我作为普通用户回来了,运行命令“mytool1”会给出如下错误:
rlwrap: cannot read and write /home/user1/.perl_history: Permission denied
我做了一些调查,这是我发现的:
$ ls -l /home/user1/.perl_history
-rw------- 1 root root 138 Dec 6 18:13 /home/user1/.perl_history
这里的问题是,当它以 root 身份运行时,rlwrap
会将其所有者更改/home/user1/.perl_history
为 root。
我认为这是 rlwrap 上的一个错误,因为在 Ubuntu 的情况下, $HOME
我运行后没有改变sudo bash
, rlwrap
应该用来$USER
构建历史文件。
你怎么看?