Ustaw zmienną środowiskową zawierającą symbol

1

Chciałbym ustawić zmienną środowiskową zawierającą adres URL mojego serwera proxy z moimi poświadczeniami, tak jak w tym poście na blogu .

Problemem jest to, że moje hasło zawiera symbol at i nie jestem pewien, jak poprawnie go uniknąć:

SET HTTP_PROXY=http://username:p@[email protected]:8080

Jak mam to zrobic?

Nawiasem mówiąc, zdaję sobie sprawę, że ustawienie zmiennej środowiskowej zawierającej moje dane uwierzytelniające jest bardzo złym pomysłem. Jestem otwarty na inne sugestie, które pozwolą mi użyć kompozytora za uwierzytelnionym proxy, jeśli ktoś go ma.

David Kennedy
źródło
Nie wyjaśniłeś, że mówisz o „ucieczce” URI , a nie o ucieczce interpretera poleceń . Dlatego otrzymujesz odpowiedzi na temat ucieczki interpretera poleceń.
JdeBP
Przepraszam, miałem na myśli ucieczkę URI.
David Kennedy,

Odpowiedzi:

2
set HTTP_PROXY=http://username:p^%[email protected]:8080
  1. Trzeba procent kodowania@ hasło jak %40, bo @to separator.
  2. Trzeba uciekać% w setkomendzie tak, że interpreter poleceń nawet nie próbować wykonywać zmienną środowiskową podstawienie. ^Znak jako znak ucieczki jest konwencja, która już od tak daleko jak IBM / Microsoft cmddla OS / 2 1.x, i który jest obsługiwany w Microsoft cmdWindows NT - jak i ustnych poleceń takich jak TCC / LE - do dzisiaj.
JdeBP
źródło
0

Znaki specjalne można zmieniać za pomocą „^” w powłoce CMD systemu Windows. Więc:

SET HTTP_PROXY=http://username:p^@assword^@proxy.yourdomain.com:8080

zostanie wyprowadzony jako:

C:\>echo %HTTP_PROXY%
http://username:p@[email protected]:8080

na skorupce. Ale to zależy od narzędzia, które używa zmiennej, nie wiem na pewno, czy git poprawnie przyjmuje to jako dane wejściowe (ale tak myślę).

bjoster
źródło
Myślę, że jestem zdezorientowany, w jaki sposób może odróżnić pierwszy znak od drugiego, czy to nie ma znaczenia?
David Kennedy
To nie ma znaczenia, „^” po prostu ucieka następującemu znakowi. Za każdym razem - więc ^^. ^^ też będzie działać (wyjście: ^. ^).
bjoster