ฉันพบความแปลกที่น่าสนใจเมื่อพยายามติดตั้งภาพนักเทียบท่าบน windows
ฉันสร้าง.shสคริปต์ที่ติดตั้งโฟลเดอร์โครงการเพื่อเรียกใช้อิมเมจสภาพแวดล้อมสำหรับนักพัฒนาของเรา ฉันต้องการหนึ่งสคริปต์ที่ทุก dev สามารถเรียกใช้โดยไม่คำนึงถึงเครื่องของพวกเขา เพียงแค่เรียกใช้นักเทียบท่าด้วยโฟลเดอร์โครงการปัจจุบัน
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
ทำงานได้ดี ตอนนี้แผนคือการเรียกสคริปต์นี้จากnpmดังนั้นฉันต้องการให้สิ่งนี้ทำงานโดยสัมพันธ์กับโฟลเดอร์ปัจจุบัน ลองรุ่นอื่น
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
ล้มเหลวด้วย:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from
daemon: Mount denied:
The source path "D:/my/project/folder;C"
doesn't exist and is not known to Docker.
วัด. อะไร;Cและสถานที่ที่มันมาจากไหน?
ดังนั้นผมจึงทำซึ่งทำให้ผมecho $PWD/d/my/project/folder
น่าสนใจดังนั้นจึง$PWDแก้ไขไปยังเส้นทางที่ถูกต้องในรูปแบบเส้นทาง linux และดูเหมือนว่านักเทียบท่ากำลังพยายามแปลจากนั้นเป็นเส้นทาง windows ที่ถูกต้องยกเว้นมีสิ่งนี้;Cที่ไม่ปรากฏที่ไหน และ\มี/...
เกิดอะไรขึ้นที่นี่?
ฉันได้ผลลัพธ์เดียวกันใน terminal git bash และ powershell ของ VSCode
อัปเดต: ฉันสังเกตเห็นว่าการเรียกใช้.shเทอร์มินัล powershell ของ VSCode เปิดcmd.exeหน้าต่างคอนโซลแยกต่างหากซึ่งดูเหมือนว่าจะเรียกใช้สคริปต์ใน git bash นี่อาจเป็นปัญหา git bash
"/${PWD}"