Tengo un usuario llamado foo
que usa tcsh
por defecto /etc/passwd
. No puedo cambiar ese shell predeterminado. Foo tiene un servicio llamado xyz
ejecución, para el cual todos los scripts de inicio y el archivo .(punto) que contiene variables ENV están en el directorio de inicio de foo.
Ahora también se crea un script de inicio para ejecutar ese servicio y se coloca en /etc/init.d/xyz
el que está escrito en bash.
Ahora el problema es que el servicio no se inicia al iniciar y tampoco puedo ejecutarlo desde mi usuario predeterminado al iniciar sesión. Solo es posible ejecutarlo cuando ingreso al usuario foo y ejecuto el script para iniciar el servicio.
Si me gusta esto
sudo su foo /home/foo/xyz
me mostrará errores como then: then/endif not found.
.
Entonces, lo que quiero es ejecutar un programa tcsh para ejecutarlo al arrancar desde un script init.d que está en bash. En este momento intenté hacer esto.
su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"
pero esto no inicia el servicio en el momento del arranque.
No estoy seguro de cómo hacer que un script tcsh se ejecute durante el arranque.
Respuesta1
Tu también puedes:
- utilizar
tcsh -c $script
para ejecutar los scripts con tcsh - establezca el shebang (primera línea) en el script
#!/bin/tcsh
y configúrelo como ejecutable; luego puede iniciarlo$script
como comando.