我没有得到我的系统上同样的错误。
更新:请参阅最后两段,我最好猜测发生了什么事情。
我最初的最好的猜测是,你可以通过改变家当
#!/bin/tcsh
到
#!/bin/tcsh -f
(或者使用
#!/bin/csh -f
是TCSH增加了该功能解决问题原始的csh主要用于交互式使用而不是脚本。)
的-f
选项告诉tcsh的不处理您的.login
和.cshrc
或.tcshrc
文件在启动时。通常你不希望脚本做到这一点;它使脚本的行为取决于您自己的环境设置。也许你的.login
中有一些东西与setenv
有些奇怪,但我想不出它会是什么。尝试添加-f
,看看是否有帮助。即使没有,你也应该这样做。
(不要使用-f
为/bin/sh
或/bin/bash
脚本,这意味着别的东西,而不是必要的。)
其他一些意见:
设置$PATH
和$LD_LIBRARY_PATH
为空字符串无用。只要删除这两行。
编辑:
在重新阅读你的问题,我看到你在那里干什么。您可以设置$PATH
为空字符串,然后在前面加上更多的文字吧:
setenv PATH ""
setenv PATH this:that:$PATH
这使得比我想象的那样更有意义,但它仍然是简单写一个命令:
setenv PATH this:that
把.
在你的$PATH
,特别是一开始,是一个坏主意。想想看,如果你在一个目录中运行了脚本,而这个目录中有人存放了一个令人讨厌的命令名ls
。如果要在当前目录中执行命令,请使用./command
。 (在年底$PATH
是安全的把.
,但仍然不是一个很好的主意。)
(而用tcsh或CSH作为脚本语言(而不是一个交互式shell)被广泛认为是一个不好意思,This article,即使它不说服你放弃tcsh脚本,至少会让你意识到陷阱。)
哦,如果它是一个tcsh脚本,你为什么打电话它script.sh
?在类Unix系统下不需要文件名后缀(与Windows不同),但后缀通常为.sh
,这意味着它是Bourne shell脚本。称它为script.tcsh
或script.csh
,或只是script
。
编辑:
以在您收到此错误信息仔细一看,它看起来像错误是从/bin/sh
到来,不是从tcsh的。
在我的系统,当我改变setenv
到Setenv
(一个不存在的命令),运行与tcsh的剧本给我:
Setenv: Command not found.
Setenv: Command not found.
Setenv: Command not found.
Setenv: Command not found.
不匹配的错误信息,你向我们展示。当我明确地运行它/bin/sh foo.tcsh
(独自一人出走setenv
命令),我得到:
foo.tcsh: 3: setenv: not found
foo.tcsh: 4: setenv: not found
foo.tcsh: 6: setenv: not found
foo.tcsh: 7: setenv: not found
已经匹配你得到了错误的格式。
你说/bin/tcsh --version
给出正确的结果,所以这不是问题。不知何故脚本正在执行/bin/sh
,而不是tcsh。
这是我最好的猜测。您正在运行Cygwin,或者MSYS,但是您从cmd
外壳调用脚本,而不是从Cygwin外壳调用脚本。您的Windows系统已被配置为识别.sh
后缀,以指示该文件是由C:\cygwin\bin\sh.exe
执行的脚本(正如我之前提到的,文件后缀在Unix或Cygwin环境中通常不重要,但它们在视窗)。
最简单的解决方案可能是重写脚本以符合Bourne shell语法。但是应该有办法让Windows调用Cygwin的tcsh
来执行它。如果我猜对了,让我们知道,我们可以想出一个解决方案。
作品在我的盒子上找到。你的'tcsh'真的是它自称的吗? '/ bin/tcsh --version'? –
@Shawn -/bin/tchs --version给出:tcsh 6.17.02(Astron)2010-05-12(x86_64-unknown-linux)options wide,nls,dl,al,kan,rh,nd,color,filec – goldenmean
有一个答案发布到这个问题,但它现在被删除(我不知道为什么),它链接到http://www.the4cs.com/~corin/acm/tutorial/unix/tcsh-help.html。这给了我另一个问题 - 如果我使用setenv PATH在我的.cshrc中设置了一个环境变量$ PATH。:<我的文件夹在这里>然后就像我在这个shell脚本中所做的那样,我使用set PATH =,这会优先考虑环境变量还是SHELL变量?两者之间有什么区别,如果有的话? –
goldenmean