ฉันมีหกไดเรกทอรีพร้อมไฟล์คำสั่ง เหล่านี้เป็น/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
เพราะคุณไม่ใช่ผู้จัดการแพ็คเกจ