ฉันพบความแปลกที่น่าสนใจเมื่อพยายามติดตั้งภาพนักเทียบท่าบน 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}"