1

I'm going mad trying to achieve this. I read a lot of questions over Stack Overflow, but they didn't work. I'm trying to open a tab on console2 that opens Cygwin on the path passed as a parameter to it.

For cmd.exe, is quite easy:

cmd.exe %1

For Cygwin, this looks really hard:

bash --login -i -c 'cd `cygpath \'D:\Program Files\'`;exec bash'

The problem here is that with path without spaces it works well, with spaces, it doesn't work. Also, I don't know how to pass a param to it, maybe $1 or %1?

Edit 1:

I'm almost there, I created this batch file that should be run instead of bash.exe directly:

@echo off

set CHERE_INVOKES=%CD%
set TORUN="D:\Program Files\Cygwin\bin\bash.exe" --login -i -c 'cd "%CHERE_INVOKES%"; exec bash'
echo %TORUN%
call %TORUN%
PAUSE

This works with all paths except C: (and D:), the reason? Windows is stupid, and instead of having a path called C:, it has a path called C:!!! So, while all paths ends without a backslash, the first path ends with it, driving me mad!

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Francesco Belladonna
  • 11,361
  • 12
  • 77
  • 147

2 Answers2

1

Here is the solution:

@echo off

set CHERE_INVOKES=%CD%
::Remove trailing slash if required
IF %CHERE_INVOKES:~-1%==\ SET CHERE_INVOKES=%CHERE_INVOKES:~0,-1%

set TORUN="D:\Program Files\Cygwin\bin\bash.exe" --login -i -c 'cd "%CHERE_INVOKES%"; exec bash'

call %TORUN%

I added this code from this question: Remove Trailing Slash From Batch File Input

::Remove trailing slash if required
IF %CHERE_INVOKES:~-1%==\ SET CHERE_INVOKES=%CHERE_INVOKES:~0,-1%

In this way I can use this batch file to open Console2 Cygwin on the current path.

Community
  • 1
  • 1
Francesco Belladonna
  • 11,361
  • 12
  • 77
  • 147
1

The following command works for me:

c:\cygwin\bin\bash --login -i -c "cd '%~1'; exec /bin/bash.exe"

Where %~1 expands %1 removing any surrounding quotes (") — see help for in command prompt.

See also: chere package in Cygwin, and ConEmu terminal :)

ruvim
  • 7,151
  • 2
  • 27
  • 36