ฉันต้องการใช้สคริปต์. sh สำหรับการปรับใช้แอพของฉัน สคริปต์นั้นอยู่บนเซิร์ฟเวอร์ในบ้านของฉัน (เซิร์ฟเวอร์ Ubuntu 15.10) ทำเครื่องหมายว่าสามารถใช้งานได้ การเข้าถึงสคริปต์นี้ทำได้ผ่าน ssh โดยใช้บทช่วยสอนนี้ฉันได้ตั้งค่าการเข้าสู่ระบบ ssh ที่ใช้งานสคริปต์นั้น โดยพื้นฐานแล้วฉันเพิ่งเรียกssh deployer@XXX.com someArgumentsมันและมันรันสคริปต์ด้วยsomeArgumentsพารามิเตอร์ ผู้ใช้deployerมี uid = 0 ดังนั้นโดยพื้นฐานแล้วroot(จะมีการเปลี่ยนแปลงในอนาคตฉันได้ตั้งค่าไว้เพื่อกำจัดปัญหาสิทธิ์อนุญาตจนกว่าจะทำงานได้ดี)
และนี่คือสิ่งที่หากิน สคริปต์รายงาน/usr/bin/env: php: No such file or directoryที่คำสั่ง/bin/composer install(ใช้Composer ) สิ่งต่าง ๆ แปลก ๆ ยิ่งฉันดูบทนั้นมากขึ้น ก่อนบรรทัดนี้จะมีการเรียก/bin/composer self-updateและ/bin/composer -Vซึ่งทั้งคู่ทำงานอย่างถูกต้องและแสดงเอาต์พุตที่ถูกต้อง
ฉันได้ตรวจสอบสิ่งต่าง ๆ ต่อไปนี้:
/usr/bin/env php -vแสดงเวอร์ชั่น PHP ที่ถูกต้อง (เช่นเดียวกับ/usr/bin/php -v)whereis phpแสดงphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-cliติดตั้งแพคเกจและเวอร์ชั่นใหม่ล่าสุดแล้ว$PATHมี/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich envแสดง/usr/bin/env
ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:
- เรียกใช้สคริปต์โดยตรง
bash deploy.shภายใต้รูท (เนื่องจากเป็นเช่นเดียวกับผู้ใช้) - ทำงานได้อย่างสมบูรณ์แบบโดยไม่มีข้อผิดพลาด - ใช้คำสั่งที่ล้มเหลวโดยตรง - ยังสมบูรณ์แบบโดยไม่มีข้อผิดพลาด
ดังนั้นนี่เป็นกรณีที่เจาะจงมากสำหรับฉันว่าทำไมคำสั่งนี้ไม่ทำงาน ฉันใช้เวลาในการดีบัก 12 ชั่วโมงและฉันไม่มีความคิดที่นี่
PS:ข้อผิดพลาดที่คล้ายกัน ( /usr/bin/env: node: No such file or directory) เกิดขึ้นเมื่อมีbower install(ใช้Bower ) แต่ไม่ใช่เมื่อทำงานnpm install(ใช้NPM )
sh deployและbash deployทั้งคู่ก็ให้ผลลัพธ์เหมือนกัน
/usr/bin/env > environment.txt

sh deployแทนbash deploy(อาจเป็นเรื่องน่าอาย) คุณตรวจสอบ " สิ่งต่อไปนี้ " ได้อย่างไร ฉันแนะนำให้ตรวจสอบพวกเขาในสคริปต์เพื่อให้คุณสามารถค้นพบการแทนที่ในที่สุดและการสุขาภิบาลของ envs