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 .ps1
e chame-o com PowerShell -WindowStyle Hidden -ExecutionPolicy Bypass -File Path\To\Script.ps1 %1
.