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.

관련 정보