เหตุใดเซิร์ฟเวอร์บางเครื่องจึงต้องการ './' เพื่อเรียกใช้สคริปต์


3

ฉันสงสัยว่าทำไมเซิร์ฟเวอร์ Ubuntu บางเครื่องจึงแตกต่างกัน

ฉันมีเซิร์ฟเวอร์ Ubuntu 12.04 สองตัวที่ใช้งานเว็บแอปพลิเคชัน วันนี้ฉันพยายามเรียกใช้ไฟล์ sh จากโฟลเดอร์ เซิร์ฟเวอร์ 1 สามารถเรียกใช้เชลล์โดยไม่ต้อง. / แต่เซิร์ฟเวอร์ 2 ต้องการ ทั้งสองมีสิทธิ์ 777


2
เนื้อหาของตัวแปร $ PATH บนเซิร์ฟเวอร์ทั้งสองคืออะไร
เบอนัวต์

พวกเขาทั้งหมดใช้ BASH เชลล์หรือไม่ echo $SHELL
P.-H. หลิน

@ P. -H.Lin มันเป็นทั้งทุบตี (ทั้งภาพพิมพ์ / ถังขยะ / ทุบตี)
Batbayar

@Benoit นอกจากนี้ยังมีการพิมพ์ทั้งสองต่อไปนี้: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / เกม
Batbayar

1
มีข้อผิดพลาดที่อาจารย์ยูนิกซ์ของฉันทำในวันนั้นซึ่งเขาทิ้ง: ในตอนท้ายของการประกาศเส้นทาง ผลลัพธ์นี้ใน อยู่ในเส้นทางแม้ว่าคุณจะมองไม่เห็นก็ตาม (การป้อนข้อมูลเปล่าใน PATH ทำเช่นนั้นด้วยเหตุผลบางอย่าง - โดยธรรมชาติจะเป็นไปได้ / แต่นั่นไม่ใช่สิ่งที่เกิดขึ้น)
Joshua

คำตอบ:


9

โดยปกติสคริปต์ / โปรแกรมในโฟลเดอร์ปัจจุบันจะไม่ถูกเรียกใช้งานบน linux / unix

สคริปต์ / โปรแกรมจะทำงานเมื่อสคริปต์ / โปรแกรมสามารถพบได้ใน$PATHตัวแปร

ดังนั้นเมื่อเส้นทางไม่รวมอยู่ใน$PATHตัวแปรคุณจะต้องให้เส้นทางไปยังสคริปต์ / โปรแกรมเพื่อเรียกใช้ ในการรันสคริปต์ / โปรแกรมในโฟลเดอร์ปัจจุบันคุณจะต้องเพิ่มมันเข้าไปด้วย./ซึ่งหมายถึงโฟลเดอร์ currect

โปรดตรวจสอบว่า$PATHตัวแปรในเซิร์ฟเวอร์ทั้งสองเหมือนกัน

จากความคิดเห็นของคุณเกี่ยวกับ$PATHตัวแปรฉันสงสัยว่าสคริปต์ตัวใดตัวหนึ่งอยู่ในโฟลเดอร์ที่$PATHตัวแปรถูกค้นพบในขณะที่อีกอันอยู่ในโฟลเดอร์อื่น

ความสนใจ

มันเป็นความคิดที่ดีที่จะรวมอยู่ในของคุณ./ $PATHวิธีนี้ผู้ใช้สามารถสร้างคำสั่งที่เป็นอันตราย (เช่นls) และแนะนำคุณในโฟลเดอร์ที่เขาบันทึกไว้ จากนั้นคุณจะรันเวอร์ชันโลคัลแทนคำสั่งระบบ (หากวางโฟลเดอร์ปัจจุบันไว้$PATHก่อนหน้านี้/bin)


ทั้งยังสคริปต์ดวลจุดโทษอยู่ภายใต้การ / ติดตั้ง / การทดสอบ
Batbayar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.