/usr/local/bin:/usr/bin: to the end of $PATH instead of at the top

可紊 提交于 2020-01-03 10:59:26

问题


I'm trying to ICU code using the MSVC linker. However, launching Cygwin places the /usr/local/bin and /usr/bin in front of the path, causing link.exe to always call the Cygwin version, instead of the MSVC version. How can I fix this configuration issue? Currently, I launch the VS command prompt, then launch cygwin.bat.

/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Microsoft F#/v4.0:/cygdr ive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VSTSDB/Deploy:/cygdrive/c /Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Progra m Files (x86)/Microsoft Visual Studio 10.0/VC/BIN:/cygdrive/c/Program Files (x86 )/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/F ramework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c /Program Files (x86)/Microsoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Prog ram Files (x86)/HTML Help Workshop:/cygdrive/c/Program Files (x86)/Microsoft Vis ual Studio 10.0/Team Tools/Performance Tools:/cygdrive/c/Program Files (x86)/Mic rosoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools:/cygdrive/c/Program Files (x86)/Mi crosoft SDKs/Windows/v7.0A/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c /Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygd rive/c/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Progr am Files/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn:/cygdrive/c/Program Files (x86)/Microsoft ASP.NET/ASP.N ET Web Pages/v1.0:/cygdrive/c/Program Files/TortoiseHg:/cygdrive/c/Program Files (x86)/GtkSharp/2.12/bin:/cygdrive/c/Users/tim/AppData/Roaming/npm:/cygdrive/c/P rogram Files (x86)/nodejs:/cygdrive/c/Program Files (x86)/Common Files/Intuit/QB POSSDKRuntime:/cygdrive/c/Program Files (x86)/Git/cmd

ICU tells me to

Ensure that the order of the PATH is MSVC, Cygwin, and then other PATHs. The configure script needs certain tools in Cygwin (e.g. grep).

Update. My cygwin.bat looks like this:

@echo off

C: chdir C:\cygwin\bin

bash --login -i

Not very helpful.


回答1:


For a default installation of Cygwin, PATH is set is /etc/profile. You can modify PATH so that /usr/local/bin:/usr/bin are appended rather than prepended.

# PATH="/usr/local/bin:/usr/bin:${PATH}"
PATH="${PATH}:/usr/local/bin:/usr/bin/"

Resulting in:

Setting environment for using Microsoft Visual Studio 2010 x86 tools.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>c:\cygwin\cygwin.bat

tim@xxx ~
$ printenv PATH
/cygdrive/c/Program Files (x86)/Microsoft F#/v4.0:/cygdrive/c/Program Files (x86
)/Microsoft Visual Studio 10.0/VSTSDB/Deploy:/cygdrive/c/Program Files (x86)/Mic
rosoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft
Visual Studio 10.0/VC/BIN:/cygdrive/c/Program Files (x86)/Microsoft Visual Studi
o 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cyg
drive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Mic
rosoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Program Files (x86)/HTML Hel
p Workshop:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Team Too
ls/Performance Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0
A/bin/NETFX 4.0 Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.
0A/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cyg
drive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/
cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x8
6)/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL S
erver/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn
:/cygdrive/c/Program Files (x86)/Microsoft ASP.NET/ASP.NET Web Pages/v1.0:/cygdr
ive/c/Program Files/TortoiseHg:/cygdrive/c/Program Files (x86)/GtkSharp/2.12/bin
:/cygdrive/c/Users/tim/AppData/Roaming/npm:/cygdrive/c/Program Files (x86)/nodej
s:/cygdrive/c/Program Files (x86)/Common Files/Intuit/QBPOSSDKRuntime:/cygdrive/
c/Program Files (x86)/Git/cmd:/usr/local/bin:/usr/bin/

tim@xxx ~
$ which link
/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN/link



回答2:


I think that a cleaner method is to use the ORIGINAL_PATH variable that is created in Cygwin’s /etc/profile. Instead of modifying this file, modify your .bashrc file to use ORIGINAL_PATH and then append /usr/local/bin and /usr/bin.

.bashrc:

export PATH=$ORIGINAL_PATH:/usr/local/bin:/usr/bin

Then you don't have to modify the Cygwin installation files.



来源:https://stackoverflow.com/questions/9168868/usr-local-bin-usr-bin-to-the-end-of-path-instead-of-at-the-top

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!