Cygwin 无法识别 make 命令,尽管它已安装并位于 bin 文件夹中
Cygwin doesn't recognize make command despite it being installed and in the bin folder
我一直在尝试在我的 W10 PC 上 运行 需要 make
的软件,这让我安装了 Cygwin。在查找 Cygwin 时,我看到我需要从 Devel 类别安装 make
,这是我第一次安装 Cygwin 时所做的。我第一次尝试执行 make
:
时收到以下消息
bash: make: command not found
我尝试重新安装 make
(下拉菜单的字面意思是“重新安装”)并检查 make.exe
是否在 bin
文件夹中,但我仍然遇到同样的错误。我第二次重新安装了它,但这次检查了 src 框,希望能有所帮助,但没有。
我想补充的唯一一条信息是,我试图制作的 Makefile 位于我的 C 盘 (C:\Users\myname\Documents\folder\folder_with_Makefile
) 的 Documents 文件夹中的一个文件夹中。我检查了 Cygwin 常见问题解答,它提到 Cygwin 根目录在设计上与我的驱动器根目录不同,并且只有在“你知道你在做什么”时才更改它,而我显然不知道。我不确定这是否是导致我出现问题的原因,但我将不胜感激任何帮助。
echo $PATH
的输出:
/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files (x86)/Calibre2:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files/CMake/bin:/cygdrive/c/Users/myname/AppData/Local/Programs/Python/Python39/Scripts:/cygdrive/c/Users/myname/AppData/Local/Programs/Python/Python39:/cygdrive/c/Users/myname/.cargo/bin:/cygdrive/c/Users/myname/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/JetBrains/PyCharm Community Edition 2020.2.2/bin:/cygdrive/c/Users/myname/AppData/Local/atom/bin:/cygdrive/c/Users/myname/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.3.3/bin
这是安装 cygwin 的地方:C:\cygwin64
请查看以下更改,这将帮助您使用 cygwin 正确设置 PATH 变量。
您可以执行以下更改。
直接在安装了 cygwin 的 etc/ 中打开文件 profile.bashrc。
添加以下行。
# Save Windows path variable
export WINPATH=$PATH
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin
直接在安装了 cygwin 的 etc/ 中打开 bash.bashrc 文件。
添加以下行
# The next block is only needed in case somebody starts a shell without --login parameter in the beginning (no /etc/profile invoked)
# The WINPATH variable is set in /etc/profile and contains the original Win PATH variable content
if [ -z "${WINPATH}" ] ; then
export WINPATH=$PATH
fi
# Set PATH variables
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:${WINPATH}
export MANPATH=/usr/local/man:/usr/share/man:/usr/man
您似乎没有运行登录shell。
用根目录下的两个批处理文件模拟效果,源自Cygwin.bat
预期存在
案例一:Cygwin-nologin.bat
Mintty
不 运行 bash
因为 login shell
而 PATH
不包括 /usr/bin/
Cygwin 命令主要位于:
@echo off
setlocal enableextensions
set TERM=
cd /d "%~dp0bin" && .\mintty
我运行它的效果是:
echo $PATH
/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Calibre2:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/Marco/AppData/Local/Microsoft/WindowsApps
$ which make
bash: which: command not found
$ /usr/bin/which make
/usr/bin/which: no make in (/cygdrive/c/Program Files (x86)/Intel/iCLS Client: ...)
案例 2:Cygwin-login.bat
Mintty
与 login shell
一样 运行 bash
而 PATH
包括 /usr/bin/
@echo off
setlocal enableextensions
set TERM=
cd /d "%~dp0bin" && .\mintty -
区别在于最后 -
个字符。 man mintty
了解详情
$ echo $PATH
/usr/local/bin:/usr/bin
路径非常短,因为在我的环境中我设置了一个特定的变量
$ set |grep NOWIN
CYGWIN_NOWINPATH=YES
否则 PATH 将是 Cygwin 和 Windows PATH 的组合,
前面是 Cygwin
$ echo ${PATH}":"${ORIGINAL_PATH}
/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Calibre2:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/Marco/AppData/Local/Microsoft/WindowsApps
在这两种情况下
$ which make
/usr/bin/make
$ make --version
GNU Make 4.3
Built for x86_64-pc-cygwin
...
我一直在尝试在我的 W10 PC 上 运行 需要 make
的软件,这让我安装了 Cygwin。在查找 Cygwin 时,我看到我需要从 Devel 类别安装 make
,这是我第一次安装 Cygwin 时所做的。我第一次尝试执行 make
:
bash: make: command not found
我尝试重新安装 make
(下拉菜单的字面意思是“重新安装”)并检查 make.exe
是否在 bin
文件夹中,但我仍然遇到同样的错误。我第二次重新安装了它,但这次检查了 src 框,希望能有所帮助,但没有。
我想补充的唯一一条信息是,我试图制作的 Makefile 位于我的 C 盘 (C:\Users\myname\Documents\folder\folder_with_Makefile
) 的 Documents 文件夹中的一个文件夹中。我检查了 Cygwin 常见问题解答,它提到 Cygwin 根目录在设计上与我的驱动器根目录不同,并且只有在“你知道你在做什么”时才更改它,而我显然不知道。我不确定这是否是导致我出现问题的原因,但我将不胜感激任何帮助。
echo $PATH
的输出:
/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files (x86)/Calibre2:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files/CMake/bin:/cygdrive/c/Users/myname/AppData/Local/Programs/Python/Python39/Scripts:/cygdrive/c/Users/myname/AppData/Local/Programs/Python/Python39:/cygdrive/c/Users/myname/.cargo/bin:/cygdrive/c/Users/myname/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/JetBrains/PyCharm Community Edition 2020.2.2/bin:/cygdrive/c/Users/myname/AppData/Local/atom/bin:/cygdrive/c/Users/myname/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.3.3/bin
这是安装 cygwin 的地方:C:\cygwin64
请查看以下更改,这将帮助您使用 cygwin 正确设置 PATH 变量。
您可以执行以下更改。
直接在安装了 cygwin 的 etc/ 中打开文件 profile.bashrc。
添加以下行。
# Save Windows path variable
export WINPATH=$PATH
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin
直接在安装了 cygwin 的 etc/ 中打开 bash.bashrc 文件。 添加以下行
# The next block is only needed in case somebody starts a shell without --login parameter in the beginning (no /etc/profile invoked)
# The WINPATH variable is set in /etc/profile and contains the original Win PATH variable content
if [ -z "${WINPATH}" ] ; then
export WINPATH=$PATH
fi
# Set PATH variables
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:${WINPATH}
export MANPATH=/usr/local/man:/usr/share/man:/usr/man
您似乎没有运行登录shell。
用根目录下的两个批处理文件模拟效果,源自Cygwin.bat
预期存在
案例一:Cygwin-nologin.bat
Mintty
不 运行 bash
因为 login shell
而 PATH
不包括 /usr/bin/
Cygwin 命令主要位于:
@echo off
setlocal enableextensions
set TERM=
cd /d "%~dp0bin" && .\mintty
我运行它的效果是:
echo $PATH
/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Calibre2:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/Marco/AppData/Local/Microsoft/WindowsApps
$ which make
bash: which: command not found
$ /usr/bin/which make
/usr/bin/which: no make in (/cygdrive/c/Program Files (x86)/Intel/iCLS Client: ...)
案例 2:Cygwin-login.bat
Mintty
与 login shell
一样 运行 bash
而 PATH
包括 /usr/bin/
@echo off
setlocal enableextensions
set TERM=
cd /d "%~dp0bin" && .\mintty -
区别在于最后 -
个字符。 man mintty
了解详情
$ echo $PATH
/usr/local/bin:/usr/bin
路径非常短,因为在我的环境中我设置了一个特定的变量
$ set |grep NOWIN
CYGWIN_NOWINPATH=YES
否则 PATH 将是 Cygwin 和 Windows PATH 的组合, 前面是 Cygwin
$ echo ${PATH}":"${ORIGINAL_PATH}
/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/Calibre2:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Intel/WiFi/bin:/cygdrive/c/Program Files/Common Files/Intel/WirelessCommon:/cygdrive/c/Program Files (x86)/FreeFem++:/cygdrive/c/Users/Marco/AppData/Local/Microsoft/WindowsApps
在这两种情况下
$ which make
/usr/bin/make
$ make --version
GNU Make 4.3
Built for x86_64-pc-cygwin
...