ฉันมีหกไดเรกทอรีพร้อมไฟล์คำสั่ง เหล่านี้เป็น/bin, /sbin, /usr/bin, /usr/sbin, และ/usr/local/bin/usr/local/sbin
ความแตกต่างระหว่างสิ่งเหล่านี้คืออะไร? หากฉันเขียนสคริปต์ของตัวเองฉันจะเพิ่มได้ที่ไหน
ที่เกี่ยวข้อง:
ฉันมีหกไดเรกทอรีพร้อมไฟล์คำสั่ง เหล่านี้เป็น/bin, /sbin, /usr/bin, /usr/sbin, และ/usr/local/bin/usr/local/sbin
ความแตกต่างระหว่างสิ่งเหล่านี้คืออะไร? หากฉันเขียนสคริปต์ของตัวเองฉันจะเพิ่มได้ที่ไหน
ที่เกี่ยวข้อง:
คำตอบ:
โปรดอ้างอิงFilesier Hierarchy Standard (FHS) สำหรับ Linuxสำหรับสิ่งนี้
/bin: สำหรับไบนารีที่สามารถใช้งานได้ก่อนที่/usrจะติดตั้งพาร์ติชัน สิ่งนี้ใช้สำหรับไบนารีเล็กน้อยที่ใช้ในการบูตระยะแรก ๆ หรือที่คุณต้องมีในการบูทโหมดผู้ใช้คนเดียว คิดว่าไบนารีเช่นcat, lsฯลฯ
/sbin : เหมือน แต่สำหรับไบนารีกับsuperuser (ราก) สิทธิพิเศษที่จำเป็น
/usr/bin: เช่นเดียวกับครั้งแรก แต่สำหรับไบนารีทั้งระบบทั่วไป
/usr/sbin : เหมือนข้างต้น แต่สำหรับไบนารีที่ต้องการสิทธิ์ superuser (root)
ถ้าฉันเขียนสคริปต์ของตัวเองฉันควรเพิ่มสิ่งเหล่านี้ที่ไหน?
ไม่มีการข้างต้น คุณควรใช้/usr/local/binหรือ/usr/local/sbinสคริปต์ที่มีทั้งระบบ localเส้นทางหมายความว่ามันไม่ได้รับการจัดการโดยแพคเกจระบบ (นี่คือข้อผิดพลาดสำหรับแพคเกจ Debian / Ubuntu)
สำหรับสคริปต์ที่ผู้ใช้กำหนดให้ใช้~/bin(โฟลเดอร์ bin ส่วนตัวในโฮมไดเร็กตอรี่ของคุณ)
FHS พูดว่า/usr/local:
ลำดับชั้นที่สามสำหรับข้อมูลท้องถิ่นเฉพาะกับโฮสต์นี้
bin/มักจะมีไดเรกทอรีย่อยเพิ่มเติมเช่นlib/,share/,
/binทำให้เกิดปัญหาหรือไม่? ฉันได้ย้ายสคริปต์ของฉันตามคำตอบของคุณ แต่ฉันก็ยังสงสัย
Severity:Serious Certainty:Certain
ls -laแสดงว่าไม่มีอะไร
ฉันมีคำถามที่คล้ายกันด้วยตัวเองเมื่อหนึ่งปีที่แล้ว +: ไดเรกทอรีที่ดีที่สุดในการวางสคริปต์ทุบตีของฉัน
man hier(ลำดับชั้น) แสดงรายการไดเรกทอรีทั้งหมด เพื่อให้ได้สิ่งที่ใช้สำหรับไบนารีเท่านั้น:
$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2
/bin This directory contains executable programs which are needed in single user
mode and to bring the system up or repair it.
--
/sbin Like /bin, this directory holds commands needed to boot the system, but
which are usually not executed by normal users.
--
/usr/X11R6/bin
Binaries which belong to the X-Window system; often, there is a symbolic
link from the more traditional /usr/bin/X11 to here.
--
/usr/bin
This is the primary directory for executable programs. Most programs exe‐
cuted by normal users which are not needed for booting or for repairing the
--
/usr/local/bin
Binaries for programs local to the site.
--
/usr/local/sbin
Locally installed programs for system administration.
--
/usr/sbin
This directory contains program binaries for system administration which
are not essential for the boot process, for mounting /usr, or for system
เพื่อให้ผู้ใช้ทุกคนเข้าถึงสคริปต์ของคุณคุณสามารถใส่พวกเขา/usr/local/binได้ โปรดทราบว่าคุณต้องsudoสามารถเข้าถึงเพื่อเพิ่ม / เปลี่ยนแปลงไฟล์ได้ที่นี่ ดู: มีสถานที่มาตรฐานสำหรับการวางสคริปต์ Linux ที่กำหนดเองหรือไม่?
สำหรับสคริปต์ ID /home/YOUR_NAME/binผู้ใช้ของคุณเองใส่ไว้ใน ~/.profileเก็บไว้ในใจคุณต้องสร้างไดเรกทอรีนี้เป็นครั้งแรกและสังข์ขั้วที่จะได้รับเส้นทางโดยอัตโนมัติติดตั้งโดย ดู: วิธีเพิ่ม / home / ชื่อผู้ใช้ / bin ไปยัง $ PATH ได้อย่างไร
ฉันใคร่ครวญการบางส่วนของสคริปต์ทุบตีที่ซับซ้อนมากขึ้นของฉันในการขอให้อูบุนตูgithubและการตั้งค่าให้กับการติดตั้งสคริปต์บน นี่คือตัวอย่างบางส่วน:
ฉันคิดว่าสคริปต์ควรจะติดตั้ง/usr/binซึ่งอยู่ใน $ PATH แต่ฉันยังไม่แน่ใจในสถานที่ที่เหมาะสม
man hierส่วนที่คำตอบของ gertvdijk ไม่ได้อยู่ เช่นคุณสามารถรับโครงสร้างลำดับชั้นของไดเรกทอรีในบรรทัดคำสั่งโดยไม่ต้องหันไปอ่านบนเว็บ (เช่นที่นี่)
man hierเป็นข้อความที่ตัดตอนมาจาก IMO ไม่เพียงพอ) อย่างไรก็ตามนี่อาจเป็นความเห็นส่วนตัวของฉัน
/usr/X11R6/binและซึ่งรวมอยู่ใน/usr/local/bin man heir
/usr/local/binเพราะคุณไม่ใช่ผู้จัดการแพ็คเกจ