Điều này không có gì để làm với Unix hoặc Linux. Nó hoàn toàn là Win32 và Cygwin.
Như đã thảo luận lần đầu trong tài liệu Microsoft cho Win32 và các lập trình viên Win32 khác nhau hướng dẫn gần một phần tư thế kỷ trước, nhân Windows NT không có khái niệm nhiều ổ đĩa với mỗi thư mục làm việc riêng. Đây MS-DOS mô hình được mô phỏng trong Win32 sử dụng các biến môi trường, thường không hiển thị bởi Win32 lệnh thông dịch viên set
lệnh (nhưng lập trình khá dễ dàng truy cập), với những cái tên theo hình thức (trong đó là một ký tự ổ đĩa). Giả vờ của nhiều thư mục làm việc, giống như MS-DOS cũ, là một tiểu thuyết được chia sẻ được tư vấn và duy trì bởi API Win32, trình thông dịch lệnh của Microsoft và các thư viện thời gian chạy cho các ngôn ngữ khác nhau bao gồm một số trình biên dịch C và C ++.=D:
D
cmd
Khi một quá trình Cygwin khởi động, nó sẽ chuyển đổi khối môi trường Win32 thành dạng "nhiều UNIX-y" hơn. Nó có một tập hợp các quy tắc chuyển đổi đặc biệt khó khăn cho các biến cụ thể khác nhau, chẳng hạn như PATH
. Nó không có trong tài liệu Cygwin, nhưng nó cũng xử lý các chuỗi môi trường bằng cách chuyển đổi hàng đầu thành một . Điều này mang lại các chuỗi môi trường, khi thực thi chương trình Cygwin nhìn thấy chúng, có dạng . Nó đảo ngược chuyển đổi này khi cần tạo môi trường Win32 mới vì bất kỳ lý do gì, chẳng hạn như sinh ra một quy trình mới, biến mặt sau thành a .=D:=D:\path
=
!
!D:=D:\path
!
=
Để có được trình thông dịch lệnh của Microsoft để hiển thị các biến môi trường này, người ta chỉ cần chạy
bộ ""
trong đó người ta sẽ thấy đầu ra bắt đầu như
= C: = C: \ Người dùng \ Jim
Giáo dục
Đôi khi, thêm một trong các biến môi trường này mọc lên, với :
tên là ký tự ổ đĩa. Chạy set
lệnh tương tự như trên mang lại đầu ra đầu ra
= = = = :: \
= C: = C: \ Người dùng \ Jim
Giáo dục
Sau khi điều này được Cygwin tạo ra "nhiều UNIX-y" hơn, đây tất nhiên là thứ !::=::\
mà bạn đang thấy.
Vì đây là một cơ chế được nhúng trong các ứng dụng Win32 (đặc biệt là trong trình thông dịch lệnh của Microsoft) và một phần bị vướng vào API Win32, nên việc ngăn chặn sự tồn tại của chúng không phải là chuyện nhỏ.
đọc thêm
- "
CreateProcess()
". Tham khảo Microsoft Win32 Programmer của: Chức năng, A-G . Báo chí Microsoft. 1993. ISBN Muff556155178. P. 213.
- Jeffrey Richter (1995). Windows nâng cao: Hướng dẫn của nhà phát triển về API Win32 cho Windows NT 3.5 và Windows 95 . Báo chí Microsoft. ISBN Muff556156779. Trang 26 2127.
unset '!::'