我有一个perl脚本如下: test.pl
#!/usr/bin/perl
system("ls -lart");
这种方法很好但是当我按照下面的方式运行它时会失败:
su guest test.pl
它在第二行失败如下:
0403-057 Syntax error at line 2 : `(' is not expected.
答案 0 :(得分:1)
来自man 1 su
:
OPTIONS
The options which apply to the su command are:
-c, --command COMMAND
Specify a command that will be invoked by the shell using its -c.
The executed command will have no controlling terminal. This option cannot be used to execute interractive programs which need a controlling TTY.
所以你应该使用
su -c "perl /path/to/test.pl --maybe some.options" guest
答案 1 :(得分:0)
您必须使用-c
的{{1}}选项执行此操作。问题是,如果你这样启动它,它应该是一个shell脚本。所以你必须告诉su
实际加载shell然后执行命令。
最有可能
su
将起作用(当然,只要它在用户的命令路径中)。