เมื่อฉันพยายามเรียกใช้ไฟล์ (name.sh) ในบรรทัดคำสั่งโดยคำสั่ง. / name.sh ฉันได้รับข้อผิดพลาดที่:
"" ไม่รู้จักว่าเป็นคำสั่งภายในหรือภายนอก, สามารถใช้งานได้หรือแบตช์ไฟล์
โปรดช่วยฉันเรียกใช้ไฟล์. sh
เมื่อฉันพยายามเรียกใช้ไฟล์ (name.sh) ในบรรทัดคำสั่งโดยคำสั่ง. / name.sh ฉันได้รับข้อผิดพลาดที่:
"" ไม่รู้จักว่าเป็นคำสั่งภายในหรือภายนอก, สามารถใช้งานได้หรือแบตช์ไฟล์
โปรดช่วยฉันเรียกใช้ไฟล์. sh
คำตอบ:
คุณใช้ Windows CMD.EXE (จากข้อความแสดงข้อผิดพลาด) มันใช้ไวยากรณ์ที่แตกต่างเพื่อดำเนินการคำสั่ง คุณจะต้องใช้sh name.sh
สมมติว่าคุณมี Cygwin หรือติดตั้งที่คล้ายกัน
เพื่อชี้แจง, Windows ไม่มียูทิลิตี้ในตัวเพื่อรองรับไฟล์. sh เมื่อต้องการเรียกเช่นนี้คุณจะต้องติดตั้งเครื่องมือของบุคคลที่สามเช่นCygwin
คุณกำลังพยายามเรียกใช้คำสั่ง Linux ที่พร้อมรับคำสั่งของ Windows
บน Linux เครื่องหมายฟอร์เวิร์ดสแลชเป็นตัวคั่นพา ธ บน Windows เครื่องหมายแบ็กสแลชเป็นตัวคั่นพา ธ และโดยทั่วไปสแลชสแลชหมายถึงอาร์กิวเมนต์
ดังนั้น Windows คิดว่าคุณพยายามเรียกใช้คำสั่ง "" และแยกอาร์กิวเมนต์เป็น "/name.sh" การประชุมที่ถูกต้องจะเป็น ". \ name.sh" นอกจากนี้ Windows จะค้นหาไดเรกทอรีปัจจุบันสำหรับคำสั่งของคุณโดยอัตโนมัติดังนั้นคุณสามารถพิมพ์ "name.sh"
ปัญหาต่อไปที่คุณจะเผชิญคือ Windows ไม่รู้ว่าตัวเองกำลังเขียนบทอะไรอีกครั้งนี่เป็นเรื่องของลีนุกซ์ คุณสามารถแก้ปัญหานี้ได้โดยติดตั้ง Cygwin หากคุณต้องการหรือต้องการรันสคริปต์ sh
อย่างไรก็ตามการตัดสินโดยหนึ่งในความคิดเห็นก่อนหน้าของคุณคุณก็สามารถเปลี่ยนชื่อสคริปต์เป็น name.bat และลบบรรทัด "#! / bin / sh" ตอนนี้คุณมีไฟล์รุ่นที่ Windows ควรเข้าใจ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับไฟล์ชุดที่นี่
หรือคุณอาจหันไปทางด้านมืดและติดตั้ง Linux จากพรอมต์:
sh runide.sh
หรือ
sudo sh runide.sh
โปรแกรมของคุณจะทำงานและคุณจะมีระบบที่ดีขึ้นเช่นกัน
ดาวน์โหลดและติดตั้ง. git สำหรับ Windows
คลิกขวาที่เดสก์ท็อปแล้วพูดว่า"git bash here"
รันสคริปต์ของคุณเหมือนในยูนิกซ์
ทำ!
ข้อควรระวัง: คำสั่งจำนวนมากจะไม่ทำงานบน windows! แต่ถึงกระนั้นสิ่งพื้นฐานหลายอย่างก็ใช้งานได้
หากคุณต้องการสคริปต์นั้นเป็นประจำคุณอาจต้องการสร้างทางลัด (บนเดสก์ท็อปของคุณ):
สร้างทางลัดไปยังmintty.exe
บนเดสก์ท็อปของคุณ
แก้ไขคุณสมบัติของทางลัดและเปลี่ยนเป้าหมาย (เก็บพา ธ ):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
คุณกำลังพยายามขับรถด้วยน้ำส้มแทนน้ำมันเบนซิน Windows ใช้คำสั่งที่คล้ายกันซึ่งเก็บไว้ในไฟล์. bat หรือ. cmd กับสคริปต์เชลล์ Unix / Linux / zOS ระบบปฏิบัติการ Unix Subsystem / * ix เนื่องจากระบบปฏิบัติการสองตระกูลนี้ใช้บรรพบุรุษร่วมกันกับเครื่อง DEC PDP-x
หากคุณต้องการความพึงพอใจทันทีคุณจะต้องติดตั้งสภาพแวดล้อมที่มีโปรแกรม "sh.exe" หรือ "csh.exe" หรือ "bash.exe" (tsh.exe ทุกคน?)
อีกวิธีหนึ่งถ้าคุณรู้จักคำสั่งสคริปต์ Unix ได้ดีมากและคุณรู้จักคำสั่งไฟล์ Windows .cmd และ. bat คุณสามารถแปลไฟล์. sh เป็นไฟล์. bat หรือ. cmd ได้ ถึงอย่างนั้นคุณก็มักจะพบกับโปรแกรม Unix ที่ไม่เทียบเท่า Windows, grep, sed, vi, emacs เป็นต้นดังนั้นการเรียกใช้เพื่อติดตั้ง CygWin (ไม่ใช้ความเรียบง่าย) - เพียงแค่รับเชลล์และ Unix เครื่องมือ ใส่ในแฟลชไดรฟ์สำหรับโอกาสพิเศษเหล่านี้
มีคนพูดบางอย่างเกี่ยวกับ MS-DOS ที่ใช้/
สำหรับคำสั่งและ\
เส้นทาง นี่เป็นสิ่งที่ทำให้เข้าใจผิดเล็กน้อย ดูตัวอย่างของฉัน:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
ไม่มีผลแตกต่างกัน ใช่มันไม่เป็นความจริงสำหรับการดำเนินการทั้งหมด - คำตอบที่แท้จริงคือเพียงไม่หรือไม่มี Cygwin หรือ SSHD คุณไม่สามารถทำได้
ฉันรู้ว่าเพียงเพราะฉันโง่ใช้เวลาครึ่งวันพยายามที่จะคิดออกว่าif then fi
และeval
, exec
ทำอย่างไรกับ-Djava.something
เมื่อเรียก
ใช้ Github สำหรับ Windows มันมีทั้งหมดสภาพแวดล้อมปฏิบัติการยูนิกซ์
เพื่อความสมบูรณ์ฉันต้องการพูดถึงคุณลักษณะใหม่“ Windows Subsystem สำหรับ Linux” สำหรับ Windows 10 รายละเอียดได้อธิบายไว้ในhttp://www.howtogeek.com/249966/how-to-install-and-use-the-linux- ทุบตีเปลือก-on-Windows-10 /
โปรดทราบว่ามันต้องเปิดใช้งานสวิตช์ "โหมดนักพัฒนาซอฟต์แวร์" และเปิดใช้งานตัวเลือก "ระบบย่อย Windows สำหรับ Linux (เบต้า)"
สำหรับตัวฉันเองฉันพบว่าการติดตั้ง Git สำหรับ Windows (ที่ฉันใช้อยู่) เพียงพอแล้ว
นี่เป็นเธรดเก่า แต่สำหรับผู้ที่ใช้ Windows 10 เพียงเปิดฟีเจอร์ windows จากแผงควบคุม 'เปิดหรือปิดฟีเจอร์ Windows'
เลือกคุณสมบัติ 'Windows Subsystem สำหรับ Linux' หลังจากติดตั้งคุณมี 'Bash' และคุณยังสามารถกำหนดค่าเซิร์ฟเวอร์ Linux ภายในการทุบตี และแน่นอนคำสั่ง sh ภายใน bash ก็ทำงานได้เช่นกัน
เป็นไปได้ว่าปัญหาเกิดขึ้นจริงภายในไฟล์name.sh
- คุณพยายามใช้.
คำสั่ง แต่พยายามเรียกใช้เชลล์ชนิดหนึ่ง (เช่นcsh
ฉันคิดว่า) ซึ่งไม่ใช่คำสั่งที่ถูกต้อง
ดังนั้น: ไม่name.sh
เริ่มต้นด้วยการที่ถูกต้อง#!/bin/sh
(ถ้าคุณเป็นจริงพยายามที่จะใช้sh
)?
ตกลงมีจำนวนมากผิดปกติกับที่ - วาง #! / bin / sh และเปลี่ยนการขยายเป็นค้างคาวและมันอาจทำงานกับการแก้ไขเพิ่มเติมอีกไม่กี่ จากนั้นคุณสามารถเรียกใช้โดยใช้ชื่อไฟล์ได้เช่นกัน
ไวยากรณ์ของสคริปต์ยูนิกซ์เชลล์และไฟล์แบตช์ windows ไม่ได้คล้ายกันมากเกินไป cygwin หรือภาระที่ยุ่งเหยิงกับ unxutils อาจทำให้บางสิ่งบางอย่างทำงานได้ทั้งสองอย่าง แต่ถ้าคุณไม่แน่ใจว่าสภาพแวดล้อมนั้นเหมือนกันเสมอมันไม่คุ้มค่าที่จะปวดหัว
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
อะไร?! ฉันสงสัยว่าคุณไม่เคยลองสิ่งนี้ ... ใน Windows แม้ความสามารถในการทุบตีที่ง่ายที่สุดจะไม่ได้รับการสนับสนุนหรือต้องการไวยากรณ์ที่มีความยาวมาก
หากคุณมีกล่อง Linux ในบ้าน (หรือที่ทำงาน) และเชื่อมต่อกับเครือข่ายเดียวกันและเครือข่ายนี้ปลอดภัยนี่อาจเป็นเคล็ดลับ:
เพื่อรันเชลล์สคริปต์จากหน้าต่าง ใช้คำสั่งแรก: dos2unix จากนั้นคุณสามารถใช้คำสั่งปกติของคุณ: sh runide.sh
สิ่งนี้จะได้ผล
ถึงแม้ว่าคำตอบที่มีอยู่ที่นี่มีความถูกต้องในเวลาที่ใช้ Windows 10 ไม่ตอนนี้เลือกที่จะรวมถึงรุ่นล่าสุดของอูบุนตูทำงานเปลือกทุบตีเต็ม
เมื่อทำการเอ็กซีคิ้วท์แล้วสคริปต์จะสามารถทำงานได้ตามปกติจากภายในการทุบตีเช่น:
chmod +x myscript.sh
./myscript.sh
หากคุณต้องการเรียกใช้สคริปต์โดยตรงจาก Windows คุณสามารถสร้างทางลัดในไดเรกทอรีเดียวกันและตั้งค่า 'เป้าหมาย' เป็นดังนี้:
C:\Windows\System32\bash.exe -c "./myscript.sh"
หากเส้นทางของสคริปต์ของคุณสัมพันธ์กับตำแหน่งของทางลัด (เช่นตัวอย่างด้านบน) ให้แน่ใจว่าฟิลด์ 'เริ่มต้นใน' ว่างเปล่าเช่นกัน