0

次のように、2つの環境変数を設定して、どちらが機能するかをテストします

.bash_profile

NODE_BIN1="/cygdrive/c/Program Files/nodejs"
NODE_BIN2=/cygdrive/c/Program\ Files/nodejs
export NODE_BIN1 NODE_BIN2

次に、Cygwin ターミナルでテストします

$ cd $NODE_BIN1
kevin@kevin-HP /cygdrive/c/Program  (wrong!)

$ cd $NODE_BIN2
kevin@kevin-HP /cygdrive/c/Program  (wrong!)

$ cd C:/Program Files/nodejs
kevin@kevin-HP /cygdrive/c/Program  (wrong!)

$ cd "C:/Program Files/nodejs"
kevin@kevin-HP /cygdrive/c/Program Files/nodejs 

最後の結果は私が望むものですが、実際には $NODE_BIN1 と同じ文字列です。

これを修正するアイデアはありますか?どうもありがとう !

4

2 に答える 2

1

cygpathを使用してみますか?

export NODE_BIN1=`cygpath -w -s "/cygdrive/c/Program Files/nodejs"`

これも同じ出力を提供します

export NODE_BIN1=`cygpath -d "/cygdrive/c/Program Files/nodejs"`
于 2013-01-15T04:07:21.083 に答える
0

どちらの方法でも、環境変数が正しく設定されます。あなたが経験している問題は、それを使おうとするときです。bash はデフォルトで変数をスペースで分割し、最終的にcdと の 2 つの引数で呼び出すことに/cygdrive/c/ProgramなりますFiles/nodejs

もちろん、解決策は zsh に切り替えることです。;)

わかった、わかった。このディレクトリに簡単に切り替えたい場合は、代わりにエイリアスを作成することを検討してください。

alias cdnode='cd "/cygdrive/c/Program\ Files/nodejs"'

ノードの利益のためだけにこれを設定したい場合は、心配しないでください。あなたはもう準備万端です。echo代わりに使用することは絶対に確実です。

$ echo "[$NODE_BIN1]"
[/cygdrive/c/Program\ Files/nodejs]
于 2013-01-15T04:12:16.147 に答える