2016-02-29 108 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文件。刪除鎖定文件解決了這個問題。