Dans les commentaires, vous avez indiqué que vous êtes sous Ubuntu, et que /bin/csh
est un lien symbolique vers /etc/alternatives/csh
qui est un lien symbolique vers /bin/csh
.
En csh
coquille a vu le jour sur BSD Unix, il n'est donc pas surprenant que csh
est un lien symbolique indirect vers /bin/bsd-csh
. Cela remonte à 1978 environ, avant qu'il ne devienne courant pour les programmes Unix de communiquer leurs propres numéros de version.
Puisque vous êtes sur Ubuntu, ceci :
dpkg -l csh
devrait vous indiquer la version que vous avez - bien que le numéro de version du paquet Debian/Ubuntu ne soit probablement pas plus utile que les informations que vous avez déjà. Et la relation entre le numéro de version du paquet et la version de l'interpréteur de commandes n'est pas tout à fait claire.
Je suppose que c'est le bon nom de paquet. Si ce n'est pas le cas, essayez dpkg -S /bin/bsd-csh
.
Vous pouvez savoir si vous exécutez tcsh
ou pas, comme ceci :
if ($?tcsh) then
echo This is tcsh
else
echo This is csh, not tcsh
endif
tcsh
es supposée pour être rétrocompatible avec csh, avec quelques fonctionnalités supplémentaires, principalement pour une utilisation interactive. Un script écrit pour tcsh pourrait facilement échouer sous csh s'il utilise des fonctionnalités spécifiques à tcsh, mais je m'attendrais à ce que tcsh soit capable de gérer un script csh. Comme le tcsh(1)
La page de manuel dit :
tcsh est une version améliorée mais complètement compatible du shell C de Berkeley UNIX, csh(1) .
Je comprends que vous ne pouvez probablement pas poster l'intégralité du script défaillant, mais pouvez-vous poster un petit exemple représentatif qui fonctionne pour vous et échoue pour vos collègues ?
Une solution pourrait être de demander à vos collègues d'installer vanilla csh
sur leurs systèmes ; ils peuvent toujours utiliser /bin/tcsh
comme shell interactif s'ils le souhaitent, mais #!/bin/csh
ferait alors en sorte que le script soit exécuté par l'ancien csh, et non par tcsh.
Enfin, je ne peux pas répondre à une question sur le scripting [t]csh sans ajouter un lien vers este .
Addendum : J'ai accès à un système Solaris avec une /bin/csh
qui n'est pas tcsh ; je peux y faire des tests simples si vous le souhaitez. Un point de données : les deux /bin/tcsh
y /bin/csh
accepter :
comme une commande nulle, mais avec /bin/csh
il n'accepte pas les arguments :
% :
% arg
:: Too many arguments