문제

나는 다음과 같를 실행하는 재미난 명령은 Cygwin 더블 클릭하여니다.sh 파일을 사용하고 있습니다.그것은에서 시작해야 하는 파일을 포함하는 디렉토리(예:/cygdrive/c/스크립트/)에서는 상대적인 경로를 작동합니다.사람에게 이것을 작동하는가?

참고:요 , 고,Cygwin 패키지를 관리하는 윈도우 컨텍스트 메뉴(Bash 프롬프트를 여기에).그것은 있을 수 있습 몇 가지 단서를 해야 합니다.

도움이 되었습니까?

해결책

Ok,무언가를 발견했는 작동합니다.을 연결하는 배치 파일로 블라디미르는 제안이 작동하지 않지만,bash 인수가 핵심이다.

짧은 달콤한:연관이 명령: "C:\cygwin\bin\bash.exe"-li"%1"%*

긴 버전지 않는 경우에는 방법을 알고:

  1. 에서 탐색기,도구/폴더 옵션/파일 형식입니다.
  2. 이미 SH 항목에 대한 비교 스크립트입니다.당신이 하나를 가지고 있지 않다면,클릭 새로운 입력"SH"에서 하나를 만들 수 있습니다.
  3. SH 확장자 선택,고급을 클릭합니다.
  4. 선택하"open"행동하고 편집을 클릭합니다(또는 만듭 액션).
  5. 이것은 명령을 사용: "C:\cygwin\bin\bash.exe"-li"%1"%*.참고 없이 -li, 었 returing"명령을 발견되지 않았습니다."에서 스크립트가 있습니다.

할 수도 있습니다 추가 SH 귀하의 PATHEXT 환경변수:

WinKey+정지/고급/환경 변수를 시스템 변수/PATHEXT

당신의 도움에 대한 감사입니다,여러분!

다른 팁

여기에는 나의 솔루션입니다.그것은 잘 작동을 위해 내*.sh 스크립트 그들이 어디에 있는 디렉토리 계층 구조입니다.나는 cd cygpath dirname 호출하기 전에 bash 에 cygpath.그냥 작동합니다.

assoc .sh=bashscript

ftype bashscript=C:\cygwin\bin\bash.exe --login -i -c 'cd "$(dirname "$(cygpath -u "%1")")"; bash "$(cygpath -u "%1")"'

내가 함께 일한 드라고의 솔루션은 지금 몇 시간 동안 나는 점은 그것으로 하기 때문에 그것 eleminates 을 사용할 필요가"cygpath-u"내 쉘 스크립트가 있습니다.

내가 그 원한을 추가 기능을 가지고 있는 드래그&드롭에 대한 지원.sh 다.bash 파일이 있습니다.후에는 일부 주변의 파고를 썼습니다.박쥐에는 회합한다.sh 다.bash 파일로"bashscript"및 활성화 윈도우 탐색기 드래그&드롭 처리기한다.을 편집 Dragos'명령을 만들 손잡이 1 인수(의 경로를 항목에 떨어 쉘 스크립트).

니다.bat 파일을 대충 다음과 같습니다:

echo Registering .sh and .bash files as "bashscript"...
assoc .sh=bashscript
assoc .bash=bashscript
echo.
echo Setting the run command for the file type "bashscript"...
ftype bashscript=C:\cygwin\bin\bash.exe --login -i -c 'cd "$(dirname "$(cygpath -u "%%1")")"; bash "$(cygpath -u "%%1")" "$(/argshandler.sh "%%2")"'
echo.
echo Activating the drag^&drop capability for "bashscript" files (only 1 dropped item
echo will be passed to the script, multiple items are not supported yet)...
reg add HKEY_CLASSES_ROOT\bashscript\shellex\DropHandler /v "" /t REG_SZ /d "{60254CA5-953B-11CF-8C96-00AA00B8708C}" /f

은"argshandler.sh"스크립트에서 Cygwin 루트 단지 cygpaths 다시 첫 번째 인수 받고 아무것도 전혀 없는 경우(예:는 경우에 당신은 더블 클릭 스크립트 파일):

#!/bin/bash
if [ ! "$1" == "" ]
then
    cygpath -u "$1"
fi

모든 이 사전 설정을 아주 잘 지금까지.그러나,여전히 어떤 단점이 있는 것이 해결될:

  • Dragos'명령과 내의 유도체 그것은 실패에 올 때는 스크립트에 위치한 UNC 경로,예를 들어,\\myserver\myshare\scriptfile.sh
  • 1 떨어졌 항목에 전달하는 것입니다 쉘 스크립트입니다.

여하튼에 관하여,1-떨어지 항목지만,인수를 변경 핸들러 스크립트를 돌려주고 뭔가

"cygpathed-arg1" "cygpathed-arg2" "cygpathed-arg3"

고 변화하는 세터의 드라고 명령하여 같은 뭔가

...; bash "$(cygpath -u "%%1")" $(/argshandler.sh "%%2" "%%3" ... "%%9")'

(주는 것""주변 argshandler.sh 부분 사라)하지 않는 것이 제대로 작동:는 경우의 일부 항목을 끌어 스크립트를 포함하는 빈에서 자신의 경로,말한 경로로 분할됩니다 여러 개의 인수에 공백에도 그들의 각각은 따옴표로 묶...니다.

어떤 명령줄 전문가 그것까지 느끼를 해결하는 하나 또는 둘 이러한 문제를 해결합니까?

이지 않을 연결합니다.sh 파일이 있지만 그것을 얻을 수 있습니다 당신이 무엇을 원합니다.내가 시작하십시오.bat 를 실행하는 배치 파일은 Cygwin bash shell,그 수정처럼 그렇:

$ cat test.bat
@echo off

set MYDIR=C:\scripts

C:\cygwin\bin\bash --login -c "cd $MYDIR && echo 'Now in' `pwd`; sleep 15"

는 장난감 스크립트나 수정할 수 있습니다 전화를 재동기화 또는 전화로 별도의 쉘 스크립트입니다.내가 인정하는 것이 좋지 못한 경우가들은 디렉터 하드 코딩이 가능합니다.가 probaby 는 방식으로 그것을 얻을 자동으로 설정합니다.

그 때 내가 만들어집니다.bat 파일에서 bash 쉘에서 Cygwin,나는 눈치가 실제로"chmod+x 테스트입니다.bat"기 전에 나는 그것을 실행할 수 있는 더블 클릭합니다.나는 그것이 설정 NTFS 권한이 있습니다.지 않을 할 필요가 있는 경우에 당신은 단지 사용됩니다.

이것은 명령을 사용:

"C:\cygwin\bin\mintty.exe" -w max -h always -t "%1" -e /bin/bash -li -c 'cd "$(dirname "$(cygpath -u "%1")")" && bash "$(cygpath -u "%1")"'

그것을 실행에 mintty,최대로 설정하고,창의 제목하는 스크립트되고 실행(Windows 경로)변경,디렉터리 스크립트를 실행하고 유지한 후 그것은 완료됩니다.

또한,이것은 제목을 설정하 cygwin 경로를 스크립트:

"C:\cygwin\bin\mintty.exe" -w max -h always -t "%1" -e /bin/bash -li -c 'printf "\033]0;$(cygpath -u "%1")\007" && cd "$(dirname "$(cygpath -u "%1")")" && bash "$(cygpath -u "%1")"'

배치는 스크립트를 설정하는 협회를 위해 당신:

Windows 경로에 제목:

@echo off
assoc .sh=shellscript
ftype shellscript="C:\cygwin\bin\mintty.exe" -w max -h always -t "%%1" -e /bin/bash -li -c 'cd "$(dirname "$(cygpath -u "%%1")")" ^&^& bash "$(cygpath -u "%%1")"'
pause

고 cygwin 경로에 제목:

@echo off
assoc .sh=shellscript
ftype shellscript="C:\cygwin\bin\mintty.exe" -w max -h always -t "%%1" -e /bin/bash -li -c 'printf "\033]0;$(cygpath -u "%%1")\007" ^&^& cd "$(dirname "$(cygpath -u "%%1")")" ^&^& bash "$(cygpath -u "%%1")"'
pause

할 수 있어야 합니다.sh 파일하여\CYGWIN\usr\bin\bash.exe.스크립트를 변경해야 자신의 작업 디렉터리에 저는 고집 제안 같은 것이에서 최고:

cd `dirname "$0"`
    Windows Registry Editor Version 5.00
    ;File:ConfigureShToBeRunUnderExplorer.reg v:1.0 docs at the end
    [HKEY_CLASSES_ROOT\Applications\bash.exe] 

    [HKEY_CLASSES_ROOT\Applications\bash.exe\shell]

    [HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open]

    [HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command]
    @="C:\\cygwin\\bin\\bash.exe -li \"%1\" %*"

    ; This is a simple registry file to automate the execution of sh via cygwin on windows 7, might work on other Windows versions ... not tested 
    ; you could add this setting by issueing the following command: reg import ConfigureShToBeRunUnderExplorer.reg 
    ; Note the path of your bash.exe
    ; Note that you still have to add the .sh to your %PATHTEXT%
            ; usage: double - click the file or reg import file 

는 한 다른 장소입니다.내가 무엇을 마련하기 위해 관리는,먼저 선택 C:\cygwin64\bin\mintty.exe 윈도우에서"열고..."대화 후 레지스트리를 편집하고의 가치

[Computer\HKEY_CLASSES_ROOT\Applications\mintty.exe\shell\open\command]

하여,

C:\cygwin64\bin\mintty.exe -t "%1" /bin/bash -l -i -c "v1=\"$(cygpath -u \"%0\" -a)\" && v2=\"$(dirname \"$v1\")\" && cd \"$v2\" ; exec bash  \"%1\" %*"  

하나 작동하는 솔루션을 만드는 것입 .bat 파일이 열리는 cygwin 고 스크립트를 실행합니다.

스크립트를 실행하는 스크립트 go.sh 에 위치한 나의 홈디렉토리:

@echo off

C:
chdir C:\cygwin\bin

bash --login -i ./go.sh

나는 그냥 성가시게 하지 않았다.나는 관련입니다.sh 파일을 크림슨 편집기(기 때문가가 많은 시간을 보내는 작업을 버그로 나가 실제적으로 그들을 실행).지금의 사정을 받고"오른쪽으로 열기/편집하는"조합하여 작업에서 파일 형식니다.면 내가 무엇을 알고 있었 DDE 코드 진홍집,사용되는 것을 쉽게 할;이 게시물 수 없었어 그것을 찾기 위해,그러나입니다.

이를 생각 나게 내 맥 일(1993-2008)사용할 때 나는 시도하고 검사 프로그램용보다 더 많은 초보적인 AppleScript scriptability.

BZT

내가 사용하는 PuttyCyg(멋진 퍼티에서 Cygwin window)여기에 그것을 얻는 방법 모든 것:

을 만들 배치는 스크립트,예를 들어,.내 컴퓨터에서 내가 사용하는

C:\Dev\scripts\cygbashrun.bat

내용

SET CYGWIN=nodosfilewarning
C:\Cygwin\bin\putty.exe -cygterm /bin/bash.exe %1

분명히 적응을 포함한 경로의 설치하의 PuttyCyg.

그런 다음에서 Windows 파일 탐색기의 도구로 이동 폴더 옵션이 파일 유형

를 만들".sh"항목이 없는 경우에는 이미(또는.bash 에 따라 당신이 좋아하는 스크립트가)..다음 고급..

[선택적인 단계]아이콘을 선택하십시오에서 아이콘을 설치

다음:

  1. 새로운..
  2. Action=실행 Bashscript..
  3. 응용 프로그램을 사용하여 이 작업을 수행=C:\Dev\scripts\cygbashrun.bat "%1"

일시:O)

개발했다.박쥐에서 스크립트는 내 자신의(지에서 유래의 답변)을 연결하는 파일 유형(예를 들어,*.cygwin)를 엽니다.bat,다음과 같다:

===파일을 실행 스크립트와 함께--Cygwin-in-동 dir.bat===

@echo off
REM   Info: A script created by Johnny Wong.  (last modified on 2014-7-15)
REM   It is used to pass a file argument to run a bash script file.  The current directory is setting to the path of the script file for convenience.
REM   Could be copied to C:\cygwin;  and then you manually associate .cygwin file extension to open with this .bat file.
set CYGWIN=nodosfilewarning

C:\cygwin\bin\bash --login -i -c 'cd "`dirname "%~1"`"; exec bash "%~1" %2 %3 %4 %5 %6 %7 %8 %9'

REM finally pause the script (press any key to continue) to keep the window to see result
pause

===파일을 실행 스크립트와 함께--Cygwin-in-동 dir.bat===

세부사항 설명에 사용되는 구문에(있을 경우 당신이 관심이 있다):

  1. %1"..."인용하는 경우에는 관련 파일을 엽니다.bat.에 대한 파일을 드래그 앤 드롭습니다.bat,그것은"..."인용하는 경우에만 파일의 경로는 공간이 있습니다.
  2. %~1 같%1 주변으로 큰 따옴표를 제거되어,그들이 존재하는 경우
  3. 을 제거하 주변의 더블에서 따옴표%p%,용 for %%a in (%p%) do set p=%%~a
  4. 를 사용해야 합니다 "%~1" 을 강제로 스크립트 파일의 경로를 따옴표는 폴더 구분'\'(1)에 의해 제거되지 않을 것이 강타할 때 치료를 받으로 탈출 자입니다.그렇지 않으면,그것은 작동하지 않는 경우 파일을 드래그 앤 드롭이 없는 공간에서의 경로이다.bat.
  5. "exec bash"될 수 있습니다 그냥"bash",전자는 저장을위한 리소스에 대한 하나 더 bash 과정입니다.

숙:)

보 assoc 및 ftype 명령에서는 dos 상자입니다.여기에 예습니다.jpg 에서 내 컴퓨터

c:\>assoc .jpg
.jpg=jpegfile

c:\>ftype jpegfile
jpegfile="C:\Program Files\Common Files\Microsoft Shared\PhotoEd\PHOTOED.EXE" "%1"

assoc .sh=bashscript

ftype bashscript="c:\cygwin\bin\bash.exe" "%1"

을 변경했는지 확인하십시오 경로를 비난에 ftype 명령하는 일치해야 할 곳 cygwin 설치

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top