2016-09-22 17 views
0

私はbashシェルシステム上で実行する必要のある高価なソフトウェアに関連するいくつかのtcshスクリプトを用意しています。それも可能ですか?このソフトウェアは頻繁にこれらのスクリプトを必要とし、tcshに基づいています。それは同時に2つのシェルを実行することは可能ですか?または、スクリプトの冒頭でtcshシェルを呼び出すだけですか?またはシェルスクリプトを翻訳するコンパイラはありますか?私の選択肢は何ですか?ありがとうございました。bashシェルシステムからtschスクリプトを実行する方法は?

+0

このことを考えてみましょう。あなたのログインシェルが 'tcsh'だったシステムでは、そのシェルは'/bin/sh'で起動されました。 – chepner

+0

@chepner:私はそれが正確だとは思わない。あなたのログインシェルは、(私が知る限り) '/ bin/sh'によってログインプロセスなどによって呼び出されます。 'system()'関数が '/ bin/sh'を使っているのは事実ですが、あなたのログインシェルを呼び出すものは' system() 'を呼び出すことによっておそらくそれをしません。 –

+0

True;私が作っていたのは、「シェルは他のどのようにも実行できるプログラムです」と思っていたからです。 – chepner

答えて

1

適切なshebangをスクリプトの上部に貼ります。 tcsh/bin/tcshとしてインストールされている、各tcshのスクリプトはその最初の行としてこれを持っていなければならないと仮定

#!/bin/tcsh -f 

-fは、.login.tcshrcとしてあなたの起動スクリプトをロードしないようにシェルに指示します任意のスクリプトを実行します。あなたのユーザ環境に依存するべきではないので、スタートアップスクリプトを起動する必要はありません。スクリプトがより速く読み込まれるようになります。-fはBourne由来のシェルとは異なる意味を持ちますが、-fはcshとtcshスクリプト)

tcshがインストールされているあなたは移植性を前提とすることができない場合は、代替手段は次のとおりです。

#!/usr/bin/env tcsh 

しかし、それはあなたが-fオプションを使用できません、それは他の欠点を持っている可能性があり、詳細はthis answerを参照してください。

実際には「bashシェルシステム」のようなものはありません。 bashとtcshはどちらも実行できるプログラムです。新しく作成されたユーザーアカウントの既定の対話型シェルとして、どちらか一方が動作する可能性はありません。

関連する問題