Como eu configuro o ConEmu para executar o Cygwin Bash?

42

Eu criei uma nova tarefa

{Bater}

passou no meu diretório pessoal

/ dir "C: \ Usuários \ TMB \"

e adicionado bash como um aplicativo

C: \ cygwin \ bin \ bash.exe

Quando abro o Bash, ele não pode usar os utilitários básicos do UNIX / Cygwin. Como eu configuro o ConEmu para executar o Cygwin Bash?

TMB
fonte
Qual versão do ConEmu você está tentando? Além disso, nem todas as versões do bash oferecem suporte ao diretório de trabalho. Git bash - pode, pelo que me lembro.
Maximus
Não consegui descobrir como definir o diretório de trabalho no meu perfil do bash, mas acho que encontrei uma solução mais geral abaixo da resposta marcada.
TMB
ConEmu x64 120727c.x64
TMB
Com "diretório de trabalho", quero dizer um que você especifica com a opção / dir. BTW, você leu esta resposta? superuser.com/a/482340/139371
Maximus

Respostas:

48

Isso pode ajudar outras pessoas.

Parece que a versão 140310 do ConEmu detecta automaticamente o CygWin Bash.

Se você instalou o Cygwin depois de instalar o ConEmu, precisará recarregar ... sua lista de tarefas.

  1. Vá para Configurações ... (Win + Alt + P)
  2. Navegue para sua lista de tarefas (Inicialização> Tarefas)
  3. Clique no botão Recarregar ....

Agora você deve ver {CygWin bash} como uma das suas opções na lista de tarefas predefinidas:

Captura de tela do CygWin bash no ConEmu

PS - Se esse método não funcionar, tente redefinir as configurações do ConEmu (clique no botão Redefinir ... na parte inferior da janela Configurações ).

FilmiHero
fonte
2
E se Recarregar e Redefinir não funcionar, acho que poderíamos inserir o caminho, o comando e as opções, conforme mostrado na captura de tela.
TMB
%SystemDrive%\cygwin64\bin\sh.exe --login -ipara mim no 140304 no canal de visualização.
TMB
3
Para mim clicando no Add default tasks...botão (logo acima do Reloadbotão) fez o truque ...
Hanan N.
9
Observe que o sh.exe não gera o arquivo .bashrc; somente o bash.exe fará isso. Então, eu estou usando o comando%SystemDrive%\cygwin64\bin\bash.exe --login -i
John Prior
O comentário de @ JohnPrior é realmente muito útil. A variável PATH estava errada ao usar sh.exe, mas com o bash.exe agora ele pode realmente encontrar meus aplicativos.
Flungo
7

ou em vez de

C:\cygwin\bin\bash.exe

usar

C:\cygwin\Cygwin.bat
Yura
fonte
Eu acho que é realmente a maneira mais simples.
laurent
6

Verifique se o Bash está recebendo um valor razoável para $PATH; geralmente ele herda isso do que quer que seja, mas o ConEmu é um aplicativo do Windows, então tudo o que ele fornecerá é o que você definiu %Path%. Geralmente isso não inclui os diretórios de caminho do Cygwin, então o Bash não sabe onde procurar ls, etc.

A maneira como eu resolveria isso seria, por qualquer meio que o ConEmu oferecer para isso, passar --login -icomo argumentos de linha de comando para o Bash; isso vai lhe dizer que você está executando-o como um shell de login interativo, por isso vai ler /etc/profile, ~/.profilee ~/.bashrcno começo. Na minha experiência, isso foi suficiente para dar uma idéia $PATH; se isso não funcionar para você, você pode especificá-lo explicitamente com uma linha como PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHna sua ~/.bashrc.

Aaron Miller
fonte
Isso me os utilitários que eu estava procurando seguinte eu queria ponto para o meu diretório janelas casa normal não /cygdrive/c/cygwin/homeentão eu eliminados homee fez um cruzamento com mklink -J home C:\Usersno cmd.exe
TMB
3
Ainda bem que fez o trabalho para você. Eu nunca pensei em usar uma junção para apontar para ~ em c: \ users \ me, mas uma vez fiz isso com um link simbólico e, com essa experiência, dou o seguinte aviso: se você precisar executar o ComboFix para limpar um malware infestação em sua máquina, ele removerá todos os arquivos em c: \ users \ you . Perdi tudo no meu diretório pessoal dessa maneira uma vez, e meu backup mais recente tinha uma semana. Não cometa o mesmo erro que eu cometi!
Aaron Miller
2

Esse é meu jeito

Crie uma nova tarefa no ConEmu com o seguinte comando

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -
Zumbido
fonte
Sua solução funciona e eu gosto de ter a interface mintty.exe, mas você pode explicar por que isso funciona? Especialmente, o que o "&" está fazendo aqui?
Dr. Koutheir Attouchi
0

Eu sei que é uma pergunta muito antiga, mas eu queria compartilhar isso de qualquer maneira:

Para iniciar o bash em um diretório de trabalho específico, basta definir o comando, por exemplo, SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"e especificar o diretório de trabalho normalmente, /dir "..."conforme descrito aqui .

Felix Bayer
fonte
0

Para disponibilizar os comandos do Cygwin bash, independentemente de como você o executa, bem como de cmdou qualquer outro shell, verifique se a Pathvariável de ambiente possui o bindiretório do Cygwin adicionado.
Vá para Control Panel > System and Security > System(tecla de atalho padrão Win+Pause) e, em seguida Advanced system settings > Environment variables. Para todos os usuários, edite a Pathvariável do sistema , apenas para o seu usuário - edite (crie se não existir) a Pathvariável do usuário .
Supondo que cygwinesteja instalado em C:\cygwin(pode ser cygwin64 para Cygwin de 64 bits), adicione C:\cygwin\binao Path. Esteja ciente de que se você usar a Pathvariável de sistema , se você adicionar o Cygwin binno início, alguns comandos do Cygwin sombrearão os integrados (por exemplo, o Cygwin findserá usado em vez do Windows 'find) Prefiro fazê-lo, mas se não o fizer, adicione o Cygwin binno final do seu Path.

Como a maioria das outras respostas também fala sobre a configuração do ConEmu, também darei minha opinião pessoal.

Eu prefiro executar um shell sem login. Por exemplo, no Linux, você obtém um shell de login ao efetuar login no console de texto ou via ssh, e um shell interativo sem login ao abrir um emulador de terminal (xterm, konsole etc.).

Minha tarefa {Bash} possui /dir "%CD%"parâmetros de tarefa para definir o diretório de trabalho no diretório de trabalho da guia atual (por exemplo, se a tarefa bash do Far). O comando para iniciar o bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

As --login -iopções de aviso são omitidas, o shell será iniciado como um shell interativo sem logon (já que não possui argumentos de opção e sem a opção -c, e o stdin e o stdout estão conectados aos terminais, consulte a seção INVOCATION da página de manual do bash para obter mais informações. explicação). Ele lerá e executará comandos do usuário rcfile ~/.bashrc(não /etc/profileou ~/.bash_profilecomo um shell de login faria, portanto, você não precisa o set CHERE_INVOKING=1que é relevante apenas em relação a /etc/profile). Então, coloque seus apelidos de usuário, opções de shell, variáveis ​​de ambiente extras etc. em ~ / .bashrc, onde eles pertencem por direito.

Gene Pavlovsky
fonte