分页: 1 / 1

脚本中使用cp命令出错

发表于 : 2012-08-06 17:45
iwasdead
有一个问题已经困扰我很长时间了,请大家帮忙解决一下。

系统:Ubuntu 10.04 LTS 64位。

使用gnome-schedule 运行一个 gnome-terminal, 然后在这个terminal中执行一个脚本。

但是问题来了,
这个脚本中的命令:
cp aaa.txt bbb.txt -f 执行失败

显示:
cp: 目标 "-f" 不是目录。

而正常的shell中执行是成功的。

后来发现,只要是通过gnome-schedule 运行起来的shell,在其中执行 cp命令的话,如果把 option放在最后都会存在这个问题。

谁能帮帮我,要疯掉了。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 17:47
枫叶饭团
原因就是运行它的shell是不同的

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 17:57
iwasdead
都是bash啊。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 17:59
cao627
原因就是运行它的shell是不同的
无论是在哪个终端中运行脚本,真正执行脚本的是脚本文件第一行 #!后指定shell吧?怎么会是“运行它的shell是不同的”?

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 18:10
iwasdead
现在是在 gnome-scedule中只执行 gnome-terminal.

然后在里面手动执行 cp aaa.txt bbb.txt -f,都会报这个错误,直接崩溃了。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 18:11
枫叶饭团
那还能怎么说呢,那就是-f 被当成一个整体了字符串了吧。
另外ls,谁说一定要听第一行的。。。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 18:20
cao627
要么楼主的脚本没写#!
要么gnome-scedule中只执行 的gnome-terminal 是无视脚本的第一行 #! 的

Re: 脚本中使用cp命令出错

发表于 : 2012-08-06 19:18
lilydjwg
这样呢?

代码: 全选

cp -f aaa.txt bbb.txt

Re: 脚本中使用cp命令出错

发表于 : 2012-08-07 9:10
iwasdead
cp -f aaa.txt bbb.txt
是正常的。

但是把选项放在最后就不行,真TM奇怪了。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-07 10:16
lilydjwg
iwasdead 写了:cp -f aaa.txt bbb.txt
是正常的。

但是把选项放在最后就不行,真TM奇怪了。
是不是两种情况调用的不同的 cp?试试

代码: 全选

cp --version
BSD 的命令都是不支持把选项放到参数后的。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-07 15:45
iwasdead
找到原因了。
出错的shell中有一个环境变量被设置上了

POSIXLY_CORRECT=true

调用
unset POSIXLY_CORRECT

就可以了,唉。
谢谢大家的帮助。

Re: 脚本中使用cp命令出错

发表于 : 2012-08-07 16:19
lilydjwg
iwasdead 写了:找到原因了。
出错的shell中有一个环境变量被设置上了

POSIXLY_CORRECT=true

调用
unset POSIXLY_CORRECT

就可以了,唉。
谢谢大家的帮助。
原来如此,大长见识啦 :em11