ไม่แน่ใจว่า /bin/sh นี้ไว้ใช้ทำอะไรเหรอครับ ถ้าไม่มีเป็นอะไรหรือเปล่า (แต่คิดว่าน่าจะมีเยอะแน่ๆ)
แล้วมันมีอะไรอยุ่ในนั้นบ้างเหรอครับ :blink:
ขอบคุณมากครับ:875328cc::875328cc:
ไม่แน่ใจว่า /bin/sh นี้ไว้ใช้ทำอะไรเหรอครับ ถ้าไม่มีเป็นอะไรหรือเปล่า (แต่คิดว่าน่าจะมีเยอะแน่ๆ)
แล้วมันมีอะไรอยุ่ในนั้นบ้างเหรอครับ :blink:
ขอบคุณมากครับ:875328cc::875328cc:
/bin/sh เป็น link ที่อ้างอิงไปยัง /bin/bash หนิครับ
เป็นลิงค์สำหรับการเรียกใช้งาน bash shell
หาก /bin/bash ไม่ถูกลบน่าจะสร้าง link ขึ้นมาใหม่ได้ครับใช้คำสั่งสร้างลิงค์ ln -s /bin/sh /bin/bash ไม่แน่ใจนะครับ
79302039 lrwxrwxrwx 1 root root 4 Oct 14 21:36 [COLOR=#40e0d0]sh[/COLOR] -> [COLOR=#008000]bash[/COLOR]
ถ้าลบไป จะมีผลกระทบมากครับ
เพราะจะมีหลายโปรแกรมเลย ชี้มาที่ /bin/sh
ลองใช้คำสั่ง ln -s /bin/sh /bin/bash มันก็ขึ้น
ln: creating symbolic link
/bin/bash' to
/bin/sh’: File exists
แต่พอ ls ดูก็ไม่ โชว์อะไรครับ
ต้องแก้ไขอย่างไรบ้างเหรอครับ หรือว่าลงใหม่อย่างเดียวเลย
ขอโทษทีครับสลับกันต้องเป็น
[COLOR=#333333] ln -s /bin/bash /bin/sh ครับ[/COLOR]
ทำไมเขาถึงเรียกกันเองทั้ง ๆ ที่อยู่ ใน Folder เดียวกันเหรอครับ (ขอสงสัยหน่อยนะ)
ลึกๆ ผมก็ไม่แน่ใจนะครับ ผิดถูกอย่างไรอย่าว่ากันนะครับ
ตามความคิดเห็นของผม
คือยกตัวอย่าง การ compile Source ไฟล์บางโปรแกรมที่ออกแบบรองรับ 64bit แบบ linux ทั้งหมดไม่ระบุเจาะจงว่า จะเป็น CentOS/RHEL/Debian/Ubuntu/FreeBSD ฯลฯ
library ที่เก็บ library แบบ 64bit นั้นจะอยู่ต่างที่กัน
บ้างก็อยู่
/usr/lib64 บ้างก็อยู่ /usr/local/lib64 ฯลฯ
เพราะฉะนั้นบางที บางโปรแกรมอ้างให้เราทำ ln หรือง่ายๆ คือสร้าง shotcut ในการเข้าถึงซึ่งจะเสมือนมี path นั้นๆ อยู่โดยไม่จำเป็นต้อง copy แล้วสร้าง folder ไป
เช่นโปรแกรมต้องการ compile ใน /usr/lib64 แต่ path จริงๆ ของ server หรือ os ของเราดันอยู่ที่ /usr/local/lib64
เราก็แค่สร้าง /usr/lib64 ชี้ไปยัง /usr/local/lib64 แทน
เพราะบาง library มันอยู่ใน path ของมันเวลา compiler c, g+ จะ compile มันจะวิ่งหาทีเดียว path เดียวจบ แต่หาก copy ไฟล์แล้วสร้างใหม่บางทีไฟล์นั้นๆ อาจถูกเรียกใช้งานโดย compiler ได้ไม่สมบูรณ์ ผมเคยลองแล้วมันมีปัญหา จึงรู้ครับ
ขอบคุณมาก ที่เสียสละอันมีค่ามาช่วยเหลือ ครับ:875328cc:
sh มันเป็น shell เก่าครับ bash เป็นรุ่นใหม่ที่ทำเลียนแบบ sh ขึ้นมาอีกที ใช้งานแทนกันได้เกือบหมดครับ
ทีนี้สคริปเก่าๆส่วนใหญ่ มันยังเขียนให้เรียก sh อยู่ครับ ก็เลยต้องทำลิ้งชี้ bash ไป sh ไว้ด้วย ให้สคริปเก่าๆทำงานได้
จริงๆจำได้ว่ามีบางกรณีที่ sh ผลลัพท์ไม่เหมือน bash ด้วยครับ แต่ bash มันฉลาด มันจะเช็คว่าถ้า user เรียกผ่านชื่อ /bin/sh มันก็จะจำลองผลลัพท์ให้ออกมาเหมือน sh ของจริงครับ
ขอบคุณมากครับ