Ошибка скрипта браузера Cygwin

Ошибка скрипта браузера Cygwin

Я использую несколько браузеров и создал скрипт bash, который проверяет, какой браузер открыт, и открывает веб-страницы в любом браузере, который уже открыт. Я использую Windows 7, поэтому я запускаю этот скрипт с помощью Cygwin. Я установил скрипт в качестве браузера по умолчанию, отредактировав соответствующие записи реестра, поэтому всякий раз, когда какая-либо программа пытается открыть веб-страницу, она вызывает этот скрипт с помощью параметра Cygwin "--login". Скрипт работает — страницы загружаются в любом открытом браузере. Однако всякий раз, когда скрипт вызывается другой программой, я получаю сообщение об ошибке: "Возникла проблема при отправке команды программе". Скрипт работает, но я все равно получаю сообщение об ошибке. Это происходит только тогда, когда скрипт вызывается другой программой — сообщения об ошибке не появляется, если я запускаю скрипт непосредственно из командной строки.

Не знаю, в чем ошибка сценария, но вот она:

#! /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

Я попробовал изменить последнюю строку на «exit 0», полагая, что возникла какая-то проблема со статусом выхода, но это не дало никакого эффекта.

Я был бы очень признателен, если бы кто-то более сведущий в Cygwin и/или Windows мог бы меня просветить. Спасибо!

решение1

Я не знаю, что происходит с вашим исходным скриптом, но, учитывая, что вы используете Windows 7, вы можете попробовать использовать 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
}

Сохраните это в файле с расширением .ps1и вызовите его с помощью PowerShell -WindowStyle Hidden -ExecutionPolicy Bypass -File Path\To\Script.ps1 %1.

Связанный контент