コメントで、Ubuntuを使用していることを示しました。これは、へのシンボリックリンクです。これは/bin/csh
へのシンボリックリンクです。/etc/alternatives/csh
/bin/csh
csh
シェルはcsh
BSDUnixで作成されたため、への間接的なシンボリックリンクであることは驚くことではありません/bin/bsd-csh
。Unixプログラムが独自のバージョン番号を報告することが一般的になる前の1978年頃にさかのぼります。
あなたはUbuntuを使用しているので、これは次のとおりです。
dpkg -l csh
あなたが持っているバージョンを教えてくれるはずです-Debian/Ubuntuパッケージのバージョン番号は、あなたがすでに持っている情報よりも役立つとは思われませんが。また、パッケージのバージョン番号とシェルのバージョンの関係は完全には明確ではありません。
それが正しいパッケージ名だと思います。そうでない場合は、試してくださいdpkg -S /bin/bsd-csh
。
tcsh
次のように、実行しているかどうかを確認できます。
if ($?tcsh) then
echo This is tcsh
else
echo This is csh, not tcsh
endif
tcsh
cshとの下位互換性があり、主にインタラクティブな使用のためにいくつかの追加機能があります。tcsh用に作成されたスクリプトは、tcsh固有の機能を使用している場合、cshで簡単に失敗する可能性がありますが、tcshがcshスクリプトを処理できることを期待しています。tcsh(1)
マニュアルページにあるように:
tcsh は、Berkeley UNIX Cシェルcsh(1)の拡張された、しかし完全に互換性のあるバージョンです。
失敗したスクリプト全体を投稿することはおそらくできないと思いますが、自分に役立ち、同僚に失敗する小さな代表的な例を投稿できますか?
1つの解決策は、同僚にバニラcsh
をシステムにインストールするように依頼することです。/bin/tcsh
必要に応じてインタラクティブシェルとして使用することもできます#!/bin/csh
が、スクリプトはtcshではなく古いcshによって実行されます。
最後に、これへのリンクを追加せずに[t]cshスクリプトに関する質問に答えることはできません。
/bin/csh
補遺: tcshではないSolarisシステムにアクセスできます。必要に応じて、そこで簡単なテストを実行できます。1つのデータポイント:両方とも/bin/tcsh
nullコマンドとして受け入れますが、/bin/csh
引数を受け入れません::
/bin/csh
% :
% arg
:: Too many arguments