Erro de script do navegador Cygwin

Erro de script do navegador Cygwin

Eu uso vários navegadores e criei um script bash que verifica qual navegador está aberto e abre páginas da web em qualquer navegador que já esteja aberto. Eu uso o Windows 7, então executo esse script usando o Cygwin. Eu defino o script como o navegador padrão editando as entradas de registro apropriadas, portanto, sempre que qualquer programa tentar abrir uma página da web, ele chamará esse script usando o parâmetro "--login" do Cygwin. O script funciona - as páginas são carregadas em qualquer navegador aberto. No entanto, sempre que o script é chamado por outro programa, recebo a mensagem de erro "Ocorreu um problema ao enviar o comando para o programa". O script funciona, mas recebo a mensagem de erro mesmo assim. Isso só acontece quando o script é chamado por outro programa - não há mensagem de erro se eu executar o script diretamente na linha de comando.

Não sei se o script está com defeito, mas aqui 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

Tentei alterar a última linha para "exit 0" com base na teoria de que havia algum problema com o status de saída, mas isso não teve efeito.

Eu realmente apreciaria se alguém mais sábio em Cygwin e/ou Windows pudesse me esclarecer. Obrigado!

Responder1

Não sei o que está acontecendo com seu script original, mas considerando que você está executando o Windows 7, você pode tentar usar o Windows PowerShell:

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
}

Salve isso em um arquivo com extensão .ps1e chame-o com PowerShell -WindowStyle Hidden -ExecutionPolicy Bypass -File Path\To\Script.ps1 %1.

informação relacionada