2010-11-09 15 views
6

Necesito ejecutar scripts csh desde un shell bash y, por lo tanto, cambiar temporalmente a tcsh mediante un comando. Funciona perfecto en modo interactivo, pero no puedo entender en un comando de una línea. Así en modo interactivo que hago en el shell bash:ejecutar scripts csh desde bash, cambiar el shell temporal mediante el comando

Tcsh

my.tcshr fuente

useMyTcshCmd

etc.

¿Cómo puedo hacer todo esto en 1 mando ? Perdón por la pregunta novato ...

Respuesta

12
tcsh -c "echo foo; echo bar" 

Resultado:

foo 
bar 

Así que esto debería funcionar:

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

se ve muy bien, lo intento mañana en el trabajo. Gracias por ayudar – user501743

3

Se debe especificar el intérprete directamente en el guión:

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

Y a continuación, sólo tiene que ejecutar el script:

./script 
+0

tipo de no funciona, ya que es varios guiones CSH que interactúan. Y la configuración .tcshr es necesaria primero. Ya pasó un tiempo intentando – user501743

+0

Deberías hacerlo dentro del script. Y no veo ningún problema con eso, lo hago todo el tiempo (aunque utilizo bash, pero el principio es el mismo). –

+0

@ user501743: En otras palabras, use una secuencia de comandos envoltorio que fuentes su archivo de puntos y ejecuta cada uno de los otros scripts. –

0
tcsh -c useMyTcshCmd 
+0

Necesito fuente my.tcshr primero, entonces realmente será una cadena de comandos. tcshr necesita establecer variables de entorno globales. – user501743

+0

tcsh lee .tcshrc cuando se ejecuta. No estoy seguro de por qué querría nombrarlo my.tcshr. Quizás podría incluir este archivo dentro de .tcshrc – Raghuram

+0

, no está en el directorio de inicio, así que tcsh no lo encontrará – user501743

Cuestiones relacionadas