我创建了一个新任务
{重击}
通过我的主目录
/ dir“ C:\ Users \ TMB \”
并添加了bash作为应用程序
C:\ cygwin \ bin \ bash.exe
当我打开Bash时,它无法使用基本的UNIX / Cygwin实用程序。如何配置ConEmu以运行Cygwin Bash?
我创建了一个新任务
{重击}
通过我的主目录
/ dir“ C:\ Users \ TMB \”
并添加了bash作为应用程序
C:\ cygwin \ bin \ bash.exe
当我打开Bash时,它无法使用基本的UNIX / Cygwin实用程序。如何配置ConEmu以运行Cygwin Bash?
Answers:
这可能会帮助其他人。
看起来ConEmu的140310版本会自动检测到CygWin Bash。
如果在安装ConEmu后安装了Cygwin,则需要重新加载...任务列表。
现在,您应该在预定义任务列表中看到{CygWin bash}作为您的选项之一:
PS-如果此方法不起作用,请尝试重置ConEmu设置(单击“ 设置”窗口底部的“ 重置...”按钮)。
%SystemDrive%\cygwin64\bin\sh.exe --login -i
在预览频道上以140304为我
Add default tasks...
按钮(在按钮上方Reload
)确实可以解决问题……
%SystemDrive%\cygwin64\bin\bash.exe --login -i
确保Bash收到合理的价值$PATH
;通常,它会从调用它的任何对象继承它,但是ConEmu是Windows应用程序,因此它将提供的只是您设置的内容%Path%
。通常,该目录不包含Cygwin路径目录,因此Bash不知道在何处查找ls
&c。
我要解决的方法是通过ConEmu提供的任何方式将--login -i
命令行参数作为参数传递给Bash。这将告诉它你运行它作为一个交互式登录shell,所以它会读/etc/profile
,~/.profile
和~/.bashrc
上启动。以我的经验,这足以使它变得明智$PATH
;如果不适合你,你可以用一条线,如明确指定它PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATH
在你的~/.bashrc
。
/cygdrive/c/cygwin/home
所以我删除home
了mklink -J home C:\Users
cmd.exe 并与cmd.exe 建立了连接
这是我的方式
使用以下命令在ConEmu中创建新任务
set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -
要使Cygwin命令可以从中获得bash
,无论您如何运行,以及从cmd
或从任何其他Shell中获得,请确保您的Path
环境变量已bin
添加Cygwin的目录。
转到Control Panel > System and Security > System
(标准热键Win+Pause
),然后Advanced system settings > Environment variables
。对于所有用户,Path
仅针对您的用户编辑系统变量-编辑(如果不存在则创建)用户Path
变量。
假设cygwin
已安装C:\cygwin
(对于64位Cygwin,可能是cygwin64),请添加C:\cygwin\bin
到中Path
。请注意,如果使用系统Path
变量,则bin
在开始时添加Cygwin的命令,某些Cygwin的命令将使内置命令无效(例如,find
将使用Cygwin的命令而不是Windows的命令)find
)。我更喜欢这样做,但如果您不这样做,请bin
在末尾添加Cygwin Path
。
由于大多数其他答案也都谈到了ConEmu的设置,因此我也会给出我的个人意见。
我更喜欢运行非登录外壳。例如,在Linux中,当您在文本控制台或通过ssh登录时,将获得一个登录shell,而在打开终端仿真器(xterm,konsole等)时,将获得一个非登录交互式shell。
我的{Bash}任务具有/dir "%CD%"
任务参数,用于将工作目录设置为当前选项卡的工作目录(例如,如果来自Far的bash任务)。启动bash的命令:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"
注意--login -i
,省略了选项,shell将作为非登录交互shell启动(因为它没有非选项参数并且没有-c选项,并且它的stdin和stdout连接到终端,请参见bash联机帮助页的INVOCATION部分以获取更多信息。说明)。它将从用户rcfile读取并执行命令~/.bashrc
(不是/etc/profile
或~/.bash_profile
不像登录shell那样,因此您不需要与set CHERE_INVOKING=1
仅仅相关的/etc/profile
)。因此,将您的用户别名,shell选项,额外的环境变量等放入〜/ .bashrc中,它们理应属于此名称。