2016-09-22 67 views
0

所以我有幾個tcsh腳本與一個昂貴的軟件相關聯,我必須在bash shell系統上運行它們。這甚至有可能嗎?該軟件需要經常使用這些腳本,並且基於tcsh。是否有可能同時運行2個shell?或者只是在腳本的開頭調用tcsh shell?或者是否有任何編譯器來翻譯shell腳本?我有什麼選擇?謝謝。如何從bash shell系統運行tsch腳本?

+0

考慮一下:在你曾經使用過的任何系統上,'tcsh'是你的登錄shell,那個shell是由'/ bin/sh'啓動的,幾乎可以肯定是* not *'tcsh'本身。 – chepner

+0

@chepner:我不認爲這是準確的。您的登錄shell是由登錄過程或類似的東西調用的,而不是(據我所知)'/ bin/sh'。的確,'system()'函數使用'/ bin/sh',但無論調用'system()'什麼都不會調用你的登錄shell。 –

+0

正確;我跑了很遠,我想做的點,這是「殼是一個程序,你可以像任何其他運行。」 – chepner

回答

1

只需在腳本的頂部放置一個合適的shebang即可。

假設您的tcsh安裝爲/bin/tcsh,每個tcsh的腳本應該有這個作爲它的第一行:

#!/bin/tcsh -f 

(該-f告訴shell不加載啓動腳本,如.login.tcshrc任何腳本不應該依賴於你的用戶環境,所以你不需要調用你的啓動腳本 - 這會使你的腳本加載速度更快。請注意-f對於Bourne派生的shell有不同的含義;僅對0123和使用csh和tcsh腳本)。

如果您不能承擔可移植性其中tcsh安裝,另一種是:

#!/usr/bin/env tcsh 

但是,這並不讓你使用-f選項,它可能有其他的缺點;詳情請參閱this answer

請注意,真的不存在「bash shell系統」這樣的事情。 bash和tcsh都只是你可以運行的程序。其中一個或另一個可能恰好是新創建的用戶帳戶的默認交互式外殼程序,但這並不影響能夠運行其中任何一個。