Utilizo varios navegadores y creé un script bash que verifica qué navegador está abierto y abre páginas web en cualquier navegador que ya esté abierto. Utilizo Windows 7, así que ejecuto este script usando Cygwin. Configuré el script como navegador predeterminado editando las entradas de registro apropiadas, de modo que cada vez que un programa intenta abrir una página web, llama a este script usando el parámetro "--login" de Cygwin. El script funciona: las páginas se cargan en cualquier navegador que esté abierto. Sin embargo, cada vez que otro programa llama al script, aparece el mensaje de error "Hubo un problema al enviar el comando al programa". El script funciona, pero de todos modos aparece el mensaje de error. Esto solo sucede cuando otro programa llama al script; no aparece ningún mensaje de error si ejecuto el script directamente desde la línea de comando.
No sé si el script tiene la culpa, pero aquí está:
#! /bin/bash
if ps -W | grep -v grep | grep waterfox.exe >/dev/null
then
"/cygdrive/c/Program Files/Waterfox/waterfox.exe" -requestPending -osint -url "$1"
elif ps -W | grep -v grep | grep firefox.exe >/dev/null
then
"/cygdrive/c/Program Files (x86)/Mozilla Firefox/firefox.exe" -requestPending -osint -url "$1"
elif ps -W | grep -v grep | grep chrome.exe >/dev/null
then
"/cygdrive/c/Users/Morgan/AppData/Local/Google/Chrome/Application/chrome.exe" -- "$1"
else
cygstart "/cygdrive/c/Program Files/Waterfox/waterfox.exe" -requestPending -osint -url "$1"
fi
exit
Intenté cambiar la última línea a "salida 0" basándose en la teoría de que había algún problema con el estado de salida, pero eso no tuvo ningún efecto.
Realmente agradecería que alguien más sabio en Cygwin y/o Windows pudiera ilustrarme. ¡Gracias!
Respuesta1
No sé qué está pasando con tu script original, pero considerando que estás ejecutando Windows 7, puedes intentar usar Windows PowerShell en su lugar:
Param([string] $Url)
function Count-Process ([string] $Name) {
return (Get-Process -Name $Name -ErrorAction SilentlyContinue).Count
}
function Invoke-Browser ([string] $Url) {
if ((Count-Process waterfox) -gt 0) {
& "C:\Program Files\Waterfox\waterfox.exe" -requestPending -osint -url $Url
} elseif ((Count-Process firefox) -gt 0) {
& "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -requestPending -osint -url $Url
} elseif ((Count-Process chrome) -gt 0) {
& "${Env:LocalAppData}\Google\Chrome\Application\chrome.exe" -- $Url
} else {
& "C:\Program Files\Waterfox\waterfox.exe" -requestPending -osint -url $Url
}
}
if ($MyInvocation.InvocationName -ne '.') {
Invoke-Browser $Url
}
Guarde esto en un archivo con extensión .ps1
y llámelo con PowerShell -WindowStyle Hidden -ExecutionPolicy Bypass -File Path\To\Script.ps1 %1
.