2015-06-09 156 views
4

我已經找到了我的環境變量行奇怪:什麼是環境變量的含義:: = ::

$ env 
... 
!::=::\ 
...

當我開始一個殼或運行bash腳本,它有時目前,有時不。而當它不存在時,我的bash調用subshel​​l $(...)需要3個反斜槓而不是每個1.

任何想法是什麼以及如何設置它?

+1

什麼操作系統和版本?還bash/zsh/etc?和版本?你是否主要在Ruby或Python(或其他)編程環境中工作?有趣。祝你好運。 – shellter

+0

這是一個bash腳本,在windows7下用cygwin運行。 –

+0

也許你可以嘗試在你的文件系統中尋找。嘗試對'grep -r'!:: = :: \\'/'進行一些修改。但不知道你需要如何改變它爲cygwin,但。 – Aereaux

回答

4

這是Cygwin對Windows命令處理器(cmd.exe)創建的special environment variables之一的表示,以跟蹤MS-DOS執行相同方式的每個驅動器的單獨當前目錄。您還應該在env的輸出中看到類似!C:=C:\Users\Ross Ridge的條目。 Windows命令處理器以=X:=X:\Path的格式創建它們,但Cygwin將初始=更改爲!以使其成爲合法的Unix環境條目。因此=::=::\是在Cygwin繼承的Windows環境中。我不確定爲什麼在Windows環境中有一個=::=::\條目,:不是合法的驅動器號,而是Raymond Chen says it's a bug。即使在我使用Win-R直接啓動Cygwin bash而不使用cmd.exe的情況下,它仍存在於我的計算機上的Windows環境中,因此尚不清楚實際設置的是什麼。

+0

很好找到和很好的參考鏈接。這並沒有回答有關逃避差異的輔助問題(但我對此事持懷疑態度)。 –