Đặt biến môi trường chứa tại ký hiệu


1

Tôi muốn đặt một biến môi trường có chứa URL của máy chủ proxy của tôi với thông tin đăng nhập của tôi, như trong bài đăng trên blog này .

Vấn đề tôi gặp phải là mật khẩu của tôi chứa ký hiệu và tôi không biết làm cách nào để thoát nó đúng cách:

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

Làm thế nào để tôi làm điều này?

Nhân tiện, tôi nhận ra việc đặt một biến môi trường chứa thông tin đăng nhập của tôi là một ý tưởng rất tồi. Tôi mở các đề xuất khác cho phép tôi sử dụng nhà soạn nhạc đằng sau một proxy xác thực nếu có ai có.


Bạn đã không nói rõ rằng bạn đang nói về URI "thoát", không phải là trình thông dịch lệnh thoát. Đó là lý do tại sao bạn nhận được những câu trả lời về trình thông dịch lệnh thoát.
JdeBP

Xin lỗi, tôi có nghĩa là URI thoát.
David Kennedy

Câu trả lời:


2
set HTTP_PROXY=http://username:p^%40assword@proxy.yourdomain.com:8080
  1. Một cần trăm mã hóa các @trong mật khẩu như %40, vì @là một dấu phân cách.
  2. Một cần phải thoát khỏi sự %trong setlệnh để thông dịch lệnh thậm chí không cố gắng để thực hiện thay biến môi trường. Ký ^tự dưới dạng ký tự thoát là một quy ước đã có từ thời xa xưa như IBM / Microsoft cmdcho OS / 2 1.x và được hỗ trợ trong Microsoft cmdtrên Windows NT - cũng như trong các trình thông dịch lệnh như TCC / LE - cho đến ngày nay.

0

Các ký tự đặc biệt có thể được thoát bằng "^" trên Windows CMD Shell. Vì thế:

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

sẽ được xuất ra như:

C:\>echo %HTTP_PROXY%
http://username:p@assword@proxy.yourdomain.com:8080

trên vỏ. Nhưng điều đó phụ thuộc vào công cụ đang sử dụng biến, tôi không biết chắc chắn nếu git lấy điều này làm đầu vào chính xác (nhưng tôi nghĩ vậy).


Tôi đoán điều tôi bối rối là làm thế nào nó có thể cho biết sự khác biệt giữa cái đầu tiên và cái thứ hai, hay nó không quan trọng?
David Kennedy

Không thành vấn đề, '^' chỉ thoát khỏi ký tự sau. Mỗi lần - vì vậy ^^. ^^ cũng sẽ hoạt động (đầu ra: ^. ^).
bjoster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.