【发布时间】:2016-02-29 20:25:33
【问题描述】:
我正在运行 CentOS 7,但遇到 tcsh 脚本问题。
我有一个名为 quittest 的简单脚本。
#!/bin/tcsh
echo "Simple Test"
exit 0
当我从终端运行退出测试时,我得到了
"Simple Test"
它不会退出。我可以 Control+C 退出。我通过以下方式检查此状态:
ps辅助
它显示退出测试状态为 S+(前台可中断睡眠)。如果我将此脚本更改为 bash 或 sh,它运行良好,并按预期退出。
我不能只切换到另一个 shell,因为我的用户使用 tcsh 编写的脚本非常复杂。我们正在用 CentOS 7 替换 OpenSuSE 12.3。
Tcsh 版本 6.18.01-7。 SELinux 设置为允许测试此问题。
【问题讨论】:
-
dos2unix quittest会解决这个问题吗?别的。 .... tcsh 6.07.02 版“它对我有用”,我也完全希望它能够工作。可能还有其他问题。可以在文件末尾添加一个额外的\n吗?并且也许检查 CentOS 论坛,看看其他人是否有这个问题,并且有可用的补丁。祝你好运!! -
我尝试更新到最新的 tcsh 软件包。它从 6.18.01-7 到 6.18.01-8。这表明没有改善。我在 CentOS 论坛中找不到任何与此问题相关的内容(我在此处发帖之前已检查过)。有些错误报告似乎与我的问题无关。
-
试试
cat -vet quittest。你在行尾看到^Ms 吗?如果是这样,那么dos2unix quittest。否则,我没有想法(目前)。祝你好运! -
每行末尾都有 $ 与您列出的命令。这是一些古怪的行为。我的旧 tcsh shell (6.17.02) 没有这样的问题。我会继续调查...
-
对不起,应该说,
$和^Is 预计来自cat -vet。正如您没有看到^Ms 那样,~/.tcshrc或其他启动文件(我不再记得所有这些文件)中可能有一些东西为奇怪的行为设置了标志。检查man tcsh并希望有一个startup部分。您的 2 个操作系统的基本安装之间可能存在/etc/tcshrc(或类似名称)。啊,还有 SELinux,不知道这会增加什么。但是真的很难想象会导致这种情况的外壳“功能”。 其他人可以重现这个问题吗?祝你好运。
标签: linux shell scripting centos7 tcsh