【发布时间】:2015-05-25 20:59:11
【问题描述】:
我对在 Ubuntu Linaro(在 Parallella 上)下看到的以下奇怪行为摸不着头脑。这个 scp 命令本身就可以正常工作:
$ scp user@UNIT1:~/myMPI/filename user@UNIT2:~/myMPI/
但是一旦我把它包装成一个脚本:
#!/bin/tcsh -f
scp user@UNIT1:~/myMPI/$1 user@UNIT2:~/myMPI/
发出来,我明白了:
$ thescript filename
user: invalid user name
用户名中没有空格或句点,这在命令行上也会失败,而不仅仅是在脚本中。尽管如此,tcsh 还是以某种方式破坏了 scp 命令。
帮助?
【问题讨论】:
-
您的脚本以
#!/bin/sh -f开头,因此它是Bourne shell 脚本,而不是tcsh 脚本。 tcsh 脚本需要#!/bin/tcsh -f,其中-f告诉shell 不要加载启动文件。/bin/sh的-f选项完全不同(它禁用路径名扩展),这里不需要它。 -
我的复制粘贴错误,现已修复。不幸的是,问题仍然存在。
-
我无法重现该问题。这是您的 tcsh 脚本的确切 内容,还是您为发布而对其进行了修改? (用户名真的是
user,主机名是UNIT1和UNIT2吗?) -
主机名是逐字的,每个主机上的实际用户名是'linaro'。
-
我建议通过逐字复制和粘贴 整个 脚本来更新您的问题。此外,在非 Linaro 系统上尝试相同的脚本(或尽可能相似的脚本)。