脚本中使用cp命令出错

sh/bash/dash/ksh/zsh等Shell脚本
回复
iwasdead
帖子: 8
注册时间: 2012-08-06 17:39

脚本中使用cp命令出错

#1

帖子 iwasdead » 2012-08-06 17:45

有一个问题已经困扰我很长时间了,请大家帮忙解决一下。

系统:Ubuntu 10.04 LTS 64位。

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

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

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

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

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

谁能帮帮我,要疯掉了。
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

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

#2

帖子 枫叶饭团 » 2012-08-06 17:47

原因就是运行它的shell是不同的
iwasdead
帖子: 8
注册时间: 2012-08-06 17:39

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

#3

帖子 iwasdead » 2012-08-06 17:57

都是bash啊。
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

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

#4

帖子 cao627 » 2012-08-06 17:59

原因就是运行它的shell是不同的
无论是在哪个终端中运行脚本,真正执行脚本的是脚本文件第一行 #!后指定shell吧?怎么会是“运行它的shell是不同的”?
iwasdead
帖子: 8
注册时间: 2012-08-06 17:39

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

#5

帖子 iwasdead » 2012-08-06 18:10

现在是在 gnome-scedule中只执行 gnome-terminal.

然后在里面手动执行 cp aaa.txt bbb.txt -f,都会报这个错误,直接崩溃了。
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

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

#6

帖子 枫叶饭团 » 2012-08-06 18:11

那还能怎么说呢,那就是-f 被当成一个整体了字符串了吧。
另外ls,谁说一定要听第一行的。。。
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

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

#7

帖子 cao627 » 2012-08-06 18:20

要么楼主的脚本没写#!
要么gnome-scedule中只执行 的gnome-terminal 是无视脚本的第一行 #! 的
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#8

帖子 lilydjwg » 2012-08-06 19:18

这样呢?

代码: 全选

cp -f aaa.txt bbb.txt
iwasdead
帖子: 8
注册时间: 2012-08-06 17:39

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

#9

帖子 iwasdead » 2012-08-07 9:10

cp -f aaa.txt bbb.txt
是正常的。

但是把选项放在最后就不行,真TM奇怪了。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#10

帖子 lilydjwg » 2012-08-07 10:16

iwasdead 写了:cp -f aaa.txt bbb.txt
是正常的。

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

代码: 全选

cp --version
BSD 的命令都是不支持把选项放到参数后的。
iwasdead
帖子: 8
注册时间: 2012-08-06 17:39

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

#11

帖子 iwasdead » 2012-08-07 15:45

找到原因了。
出错的shell中有一个环境变量被设置上了

POSIXLY_CORRECT=true

调用
unset POSIXLY_CORRECT

就可以了,唉。
谢谢大家的帮助。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#12

帖子 lilydjwg » 2012-08-07 16:19

iwasdead 写了:找到原因了。
出错的shell中有一个环境变量被设置上了

POSIXLY_CORRECT=true

调用
unset POSIXLY_CORRECT

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