เผลอ ไปลบ /bin/sh มีวิธีแก้อย่างไรบ้างครับ

ไม่แน่ใจว่า /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 ของจริงครับ

ขอบคุณมากครับ