2016-02-29 111 views
4

我正在运行CentOS 7,并且遇到了tcsh脚本的问题。Tcsh脚本不会退出

我有一个简单的脚本叫做quittest。

#!/bin/tcsh 
echo "Simple Test" 
exit 0 

当我运行从终端quittest,我得到

"Simple Test" 

,并没有退出。我可以控制+ C退出。我检查这个状态有:

的ps aux

,它显示quittest与S +(前景中断睡眠)的状态。如果我将此脚本更改为bash,或sh,它运行良好,并按预期退出。

我不能只是切换到另一个shell,因为我的用户有非常复杂的脚本用tcsh编写。我们正在用CentOS 7取代OpenSuSE 12.3。

Tcsh版本6.18.01-7。 SELinux设置为允许测试此问题。

+0

这是什么东西,将由'dos2unix quittest'修复?其他。 ....“适用于我”与ver tcsh 6.07.02,我也会完全期望这个工作。可能还有其他一些问题。可以在文件末尾添加一个额外的'\ n'?也许可以查看CentOS论坛,看看其他人是否有这个问题,并且有可用的补丁。祝你好运!! – shellter

+0

我试图更新到tcsh的最新软件包。它从6.18.01-7变成了6.18.01-8。这表明没有改善。我在CentOS论坛上找不到任何特别针对这个问题的内容(我在这里发帖之前在那里查过)。有错误报告似乎与我的问题无关。 – Jared

+0

尝试'cat -vet quittest'。你在结尾=行看到'^ M'吗?如果是这样,那么'dos2unix quittest'。否则,我不知道(现在)。祝你好运! – shellter

回答

1

原来,我的〜/ .history文件是问题。我删除了该脚本,并按预期运行了该脚本。在某些时候,必须已经挂起了权限问题。

+0

大声笑,谁会猜到。很高兴你找到了它。如果你想将tcsh转换为bash/ksh,我可以用于合同工作;-)祝你好运! – shellter

+0

我在CentOS6上遇到了同样的问题,它随机启动,不知道它是如何搞砸的,但这听起来与[此bug报告]类似(https://bugzilla.redhat.com/show_bug.cgi?id=885901)我找到了RedHat。也许它的相关?正如该报告中提到的,我们的服务器存储位置确实位于网络位置。根据这个答案删除我的'〜/ .history'似乎已经解决了这个问题。 – user5359531

1

我的所有Fedora 23的tcsh版本6.19.00-3.fc23都有同样的问题。
原因是〜/ .history.lock文件。删除锁定文件解决了这个问题。