command-line - manager - descargar cygwin para windows 10 64 bits
Cygwin: ejecute el script silenty desde "ejecutar comando" (7)
Tengo una secuencia de comandos digamos:
C:/foo.bsh
Quiero poder ejecutar este comando a través del comando de ejecución de Windows:
Start -> Run
Windows Key + R
y escribe algo pequeño como ''foo'' y pulsando return.
Sin embargo, no quiero que un mensaje de cmd sea visible. Este script realiza algunos preprocesamientos para un IDE. No quiero que el prompt cmd se abra durante la vida del proceso IDE.
Yo he tratado:
1) Creando un archivo bat con los siguientes contenidos:
c:/cygwin/bin/bash --login "C:/foo.bsh" (this fails because it keeps a cmd open)
2) Convertir el archivo bat anterior en un exe usando bat_2_exe_converter (no hace que el cmd permanezca en silencio)
pensamientos?
EDITAR: La solución hasta ahora sugiere algo para escribir a partir de un shell cygwin real. Estoy tratando de obtener una solución más rápida al tener algo corto. Puedo escribir el comando de ejecución de Windows. Además, el nohup command; exit
nohup command; exit
no mata automáticamente la caja; sin embargo, puedo eliminarla manualmente sin matar el proceso IDE. El comando de ejecución acepta accesos directos (.lnk''s), bat''s, exe''s.
Como el terminal no puede cerrarse mientras el script aún se está ejecutando, intente con el comando:
"nohup C:/foo.bsh; exit"
De esta manera, su script estará conectado a tierra y separado de la terminal, y debería salir rápidamente para que la terminal se apague. Creo que la ventana todavía puede ''parpadear'' con este enfoque, pero los resultados deberían ser mejores que los que obtendrás.
Estoy ejecutando Cygwin64 y el enlace del servidor xwin apunta a:
C: / cygwin64 / bin / run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
Esto crea un ícono Y una notificación en la barra de tareas. No me gusta eso. El icono es bastante inútil, la notificación tiene todas las opciones de menú desde .XWinrc.
Entonces ... escribí un script .vbs para ejecutar silenciosamente este comando y hacer que el ícono desaparezca:
Set objShell = CreateObject("WScript.Shell")
objShell.Run("C:/cygwin64/bin/run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe"), 0
Me ha estado molestando por un tiempo, no pude encontrar la solución para esto, pero finalmente conseguí la mezcla correcta.
Simplemente puede hacer lo siguiente si tiene cygwin en su RUTA:
run bash test.js
Si cygwin no está en su camino, puede hacer esto:
c:/cygwin/bin/run.exe -p /bin bash test.js
Si está buscando más control sobre la ventana creada (maximizar, etc.), parece que también puede usar cygstart
.
Fuentes:
- Neves responde arriba (aunque eso no fue suficiente por sí solo para que yo personalmente lo resolviera)
- http://cygwin.com/ml/cygwin/2008-09/msg00156.html
Otra posibilidad imperfecta es ejecutar el script a través de un atajo y establecer la opción Ejecutar del atajo a "minimizado".
Pruebe el comando run.exe de cygwin . Es una instalación grande, un entorno completo de Unix para su máquina con Windows. Supongamos que lo instaló en c:/cygwin/
.
Abra el shell (bash) y escriba man run
.
No hay misterio, simplemente ejecute c:/cygwin/bin/run.exe <your command here>
y tendrá la ejecución de su ventana no dos.
Puede ejecutarlo desde cualquier ventana de DOS (ejecute cmd.exe desde el menú de inicio). No necesita ejecutarlo desde cygwin.
Para hacerlo más fácil, agregue C:/cygwin/bin
a su% PATH% env var (Mi PC → Propiedades → Avanzado → Variables de entorno) (Felicitaciones a Felipe Alvarez).
Ahora puedes escribir
run "C:/foo.bsh"
Aquí está la página man del comando run:
$ man run
RUN(1) run 1.3.0 RUN(1)
NAME
run - start programs with hidden console window
SYNOPSIS
run [ -p path ] command [ -wait ] arguments
runcommand [ -p path ] [ -wait ] arguments
DESCRIPTION
Windows programs are either GUI programs or console programs. When
started console programs will either attach to an existing console
or create a new one. GUI programs can never attach to an exiting con‐
sole. There is no way to attach to an existing console but hide it if
started as GUI program.
run will do this for you. It works as intermediate and starts a pro‐
gram but makes the console window hidden.
With -p path you can add path to the PATH environment variable.
Issuing -wait as first program argument will make run wait for program
completition, otherwise it returns immediately.
The second variant is for creating wrappers. If the executable is
named runcommand (eg runemacs), run will try to start the program (eg
emacs).
EXAMPLES
run -p /usr/X11R6/bin xterm
run emacs -wait
runemacs -wait
run make -wait
AUTHORS
Charles S. Wilson
Harold L Hunt II
Jehan Bing
Alexander Gottwald
Version 1.3.0 November 2005 RUN(1)
Puedes usar cualquiera ...
c:/cygwin/bin/bash -l /path/to/script_to_interpret.sh
...o...
c:/cygwin/bin/bash -l -c /path/to/executable_script.sh
Nota: el -l
indica a bash que "actúe como si hubiera sido invocado directamente por el inicio de sesión" y utiliza Bash Startup Files . Esto es importante porque establece $ PATH y otras cosas de las que depende cuando inicia un terminal cygwin. Si no incluye -l
o --login
obtendrá "comando no encontrado" cuando intente llamar a cualquier cosa que no sea un bash incorporado.
La diferencia entre los 2 es como la diferencia entre hacer ...
bash script_to_interpret.sh
...y...
./executable_script.sh
... en * nix. El primero interpreta el guion usando bash. Este último ejecuta el script (solo si tiene chmod +x executable_script.sh
) y lo interpreta de acuerdo con su línea "shebang" . El último método es también lo que desea hacer si su ejecutable no es un script en absoluto, como un * nix binario compilado de la fuente).
Vaya al directorio donde ha instalado cygwin (en mi máquina es c: / cygwin64 / bin) Una vez allí simplemente escriba "bash.exe"