Linux Tcsh脚本不退出

Linux Tcsh脚本不退出,linux,shell,scripting,centos7,tcsh,Linux,Shell,Scripting,Centos7,Tcsh,我正在运行CentOS 7,并且在使用tcsh脚本时遇到问题 我有一个简单的脚本叫quittest #!/bin/tcsh echo "Simple Test" exit 0 当我从终点站运行quittest时,我得到 "Simple Test" 它不会退出。我可以控制+C退出。我通过以下方式检查此状态: ps aux 它显示了处于S+状态的quittest(前景可中断睡眠)。如果我将此脚本更改为bash或sh,它将正常运行,并按预期退出 我不能仅仅切换到另一个shell,因为我的用户使用t

我正在运行CentOS 7,并且在使用tcsh脚本时遇到问题

我有一个简单的脚本叫quittest

#!/bin/tcsh
echo "Simple Test"
exit 0
当我从终点站运行quittest时,我得到

"Simple Test"
它不会退出。我可以控制+C退出。我通过以下方式检查此状态:

ps aux

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

我不能仅仅切换到另一个shell,因为我的用户使用tcsh编写了非常复杂的脚本。我们正在用CentOS 7替换OpenSuSE 12.3


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

结果是,问题出在我的~/.history文件上。我删除了它,脚本按预期运行。一定是因为权限问题而挂断了。我的Fedora 23,tcsh版本6.19.00-3.fc23也有同样的问题。

原因是~/.history.lock文件。删除锁文件解决了此问题。

这是由
dos2unix quittest
解决的问题吗?其他的tcsh 6.07.02版的“它对我有用”,我也完全希望它能起作用。可能还有其他问题。是否可以在文件末尾添加额外的
\n
?也许可以在CentOS论坛上查看其他人是否有此问题,是否有可用的补丁。祝你好运我尝试更新到tcsh的最新软件包。从6.18.01-7增加到6.18.01-8。这没有任何改善。我在CentOS论坛中找不到与此问题相关的任何内容(我在这里发布之前在那里进行了检查)。有些bug报告似乎与我的问题无关。请尝试
cat-vet quittest
。您是否在=行的末尾看到
^M
s?如果是,则
dos2unix quittest
。否则,我(目前)就没有主意了。祝你好运您列出的命令的每行末尾都有$。这是一些不可靠的行为。我的旧tcsh外壳(6.17.02)没有类似的问题。我会继续调查……对不起,我应该说,
$
^I
应该是
cat-vet
提供的。由于您没有看到
^M
s,因此可能在
~/.tcshrc
或其他启动文件(我不再记得所有这些文件)中存在为奇怪行为设置标志的内容。Chk
mantcsh
并希望有一个
startup
部分。可能有一个
/etc/tcshrc
(或类似)在您的2个操作系统的基本安装之间可能有所不同。啊,还有SELinux,不知道这会增加什么。但是很难想象一个shell“特性”会导致这种情况。其他人能重现这个问题吗?祝你好运。哈哈,谁会猜到呢。很高兴你找到了。如果您想将tcsh转换为bash/ksh,我可以进行合同工作;-)祝你好运我在CentOS6上也遇到了同样的问题,它是随机开始的,不知道它是怎么搞砸的,但这听起来和我发现的RedHat类似。可能是相关的?正如该报告中提到的,我们的服务器存储位置确实位于网络位置。按照这个答案删除我的
~/.历史记录
,似乎解决了这个问题。