Necesito crear un script bash para crear y montar una unidad. Entonces, dos comandos simples. Ambos "funcionan" cuando se ingresan en la línea de comando.
El script se crea y ejecuta cada vez que un usuario normal inicia sesión, por lo que necesito un método para hacer que este script sea ejecutable en ese momento. Hasta ahora, no puedo hacer que esto funcione. Por ejemplo, la primera parte mkdir /vvv/gggg
no continúa porque el script no es ejecutable (supongo).
Espero que esto tenga sentido. es posible? Cualquier idea sobre cómo hacer que esto funcione será apreciada.
Actualización :
Gracias por sus respuestas Probablemente debería agregar información adicional además de que soy nuevo en Linux.
Estoy usando una aplicación de escritorio virtual de código abierto llamada Ulteo. Esta aplicación se ejecuta sobre Ubuntu y tiene muy poco soporte, por eso estoy aquí. Básicamente, estoy aprendiendo por fuego.
Entonces, la aplicación tiene una función de administración de script de inicio de sesión donde puedo vincular un script a un usuario. Un script simple de Windows con uso neto funciona perfectamente bien. Sin embargo, cuando trato de aplicar un script bash de Linux no sucede nada.
Estoy pensando que debido a que chmod +x
primero necesito realizar un script contra el script para que el script sea ejecutable, esta es la razón por la cual falla. Por cierto, Ulteo corre en una cárcel chroot. Creé un script, lo guardé y no pude encontrar el script. Busqué tanto dentro como fuera de la cárcel chroot.
Me gusta el enfoque de dan08 para que la secuencia de comandos inicial haga referencia a otra secuencia de comandos que puedo encontrar y hacer que sea ejecutable manualmente. ¿Me encontraría con el mismo problema?
¿Esta información adicional aclara la situación? Gracias por adelantado.
Fotos adjuntas.
! [iniciar sesión consola de administración scipt] [1]
[guiones de Windows que funcionan] [2]
! [script de Linux simple que no funciona] [3]
Lo siento, no puedo publicar imágenes todavía
fuente
ls -l scriptname
. También debe aclarar cómo se crea exactamente el script y por qué no solo lo crea una vez y lo deja solo. Finalmente, su usuario normal no debería tener acceso de escritura/var
y, por lo tanto, no debería poder crear directorios allí.Respuestas:
Hay dos cosas que debes hacer:
Consulte al intérprete de guiones al comienzo del guión:
Establezca los permisos para hacerlo ejecutable:
fuente
En lugar de hacer que su script sea ejecutable, puede adoptar un enfoque diferente y cambiar la forma en que llama al script.
script.sh
es suficiente para ejecutar un script ejecutable.sin embargo
Es posible ejecutar un script no ejecutable si especifica el programa para ejecutarlo.
So
/bin/bash script.sh
obash script.sh
orpython script.py
ejecutarán scripts no ejecutables.Por lo tanto, mi sugerencia sería editar la forma en que se llama el script y especificar el binario utilizado para ejecutarlo.
fuente
os.execv(__file__, sys.argv)
no funcionaría, y seguramente hay más situaciones como esa. Si la seguridad es un objetivo, simplemente utilícelo desde root / sudo, en lugar de eso, permita que los usuarios ejecuten binarios. Además, si el objetivo es la seguridad, no desea que puedan ejecutar scripts, porque de todos modos puede dañar el sistema ... ejecutable o no. Así que no veo por qué es importante evitar hacerlos ejecutables.Cree un programa en C, C ++ o Python, etc. y use el comando del sistema para ejecutar el script bash.
Por ejemplo, un programa en C se vería así:
Para ejecutar el programa al inicio, agréguelo a la lista de programas de inicio. Abra las Aplicaciones de inicio desde su tablero y agregue el ejecutable compilado a la lista haciendo clic en el botón Agregar.
fuente
bash path/yourbashscript.sh
.bash path/yourbashscript.sh
directamente en lugar de compilar y ejecutar este programa C?Puede hacer que su script bash sea ejecutable ejecutando lo siguiente en la línea de comando.
Luego, hacer que se ejecute al inicio se puede hacer agregándolo a su lista de programas de inicio como dijo @akabhirav.
fuente
SHC es un compilador genérico de script de shell. Toma una secuencia de comandos, que se especifica en la línea de comando y produce el código fuente C. El código fuente generado se compila y se vincula para producir un binario eliminado.
El binario compilado seguirá dependiendo del shell especificado en la primera línea del código del shell (shebang:
#!/bin/sh
o tal), por lo que SHC no crea binarios completamente independientes.SHC en sí no es un compilador como
cc
. En cambio, codifica y cifra un script de shell y genera código fuente C con la capacidad de caducidad añadida. Luego usa el compilador del sistema para compilar un binario eliminado que se comporta exactamente como el script original. Tras la ejecución, el binario compilado descifrará y ejecutará el código con la-c
opción del shell .fuente
#!
ychmod +x
?