Menu

Monday, April 27, 2020

[Bash Script] ระวังการสร้าง ฺBash Script บน Windows แล้วอาจจะไม่สามารถนำมารันบน Unix ได้
[Bash Script] Warning: Create Bash Script on Windows then Cannot Run on Unix

ในกรณีนี้เราเขียน Bash script ขึ้นมาบน Windows แล้วค่อยอัพโหลดขึ้นไปรันบนเซิร์ฟเวอร์ที่เป็น Ubuntu ผลการรันได้ข้อผิดพลาดตามด้านล่างนี้
/bin/bash^M: bad interpreter: No such file or directory
สาเหตุเกิดจากอักขระที่แทนการขึ้นบรรทัดใหม่บน Windows และ Unix นั้นต่างกันดังนี้
  • Windows จะเป็น \r\n
  • Unix จะเป็น \n
ทำให้ \r เป็นอักขระที่ไม่เกี่ยวข้องกับการขึ้นบรรทัดใหม่ จึงถูกมองว่าเป็นอักขระอีกตัวที่ตามหลัง /bin/bash จึงเกิดข้อผิดพลาดข้างต้น

วิธีแก้ไข คือ รันคำสั่งดังนี้
sed -i -e 's/\r$//' scriptname.sh
หรือเขียน bash script ใหม่บน Unix แทน

No comments:

Post a Comment