2010-11-09 3 views
6

J'ai besoin d'exécuter des scripts csh à partir d'un shell bash et donc de passer temporairement à tcsh via une commande. Il fonctionne parfaitement en mode interactif, mais je ne peux pas comprendre dans une commande d'une ligne. Ainsi, en mode interactif que je fais dans le shell bash:Exécuter des scripts csh à partir de bash, changer le shell temporaire via la commande

tcsh

source de my.tcshr

useMyTcshCmd

etc.

Comment puis-je faire tout cela en 1 commande ? Désolé pour la question de débutant ...

Répondre

12
tcsh -c "echo foo; echo bar" 

Résultat:

foo 
bar 

donc cela devrait fonctionner:

tcsh -c "source my.tcshr; useMyTcshCmd" 
+0

regarde bien, je l'essaie demain au travail. Merci pour ton aide – user501743

3

Vous devez spécifier l'interpréteur directement dans le script:

#!/usr/bin/tcsh 
echo "doing stuff" 

Et puis il suffit de lancer le script:

./script 
+0

genre de travail ne marche pas car il est plusieurs scripts csh qui interagissent. Et la configuration .tcshr est nécessaire en premier. Déjà passé un moment à essayer – user501743

+0

Vous devriez le faire dans le script. Et je n'y vois aucun problème, je le fais tout le temps (même si j'utilise bash, mais le principe est le même). –

+0

@ user501743: En d'autres termes, utilisez un script wrapper qui trouve votre fichier point et exécute chacun des autres scripts. –

0
tcsh -c useMyTcshCmd 
+0

J'ai besoin de source my.tcshr d'abord, donc ce sera vraiment une chaîne de commandes. tcshr doit définir des variables environnementales globales. – user501743

+0

tcsh lit .tcshrc lorsqu'il s'exécute. Je ne sais pas pourquoi vous voudriez le nommer my.tcshr. Peut-être que vous pourriez inclure ce fichier à l'intérieur .tcshrc – Raghuram

+0

il n'est pas dans le répertoire personnel donc tcsh ne le trouvera pas – user501743

Questions connexes