ฉันต้องการใช้สคริปต์. 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.gz
php5-cli
ติดตั้งแพคเกจและเวอร์ชั่นใหม่ล่าสุดแล้ว$PATH
มี/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
which 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