การกระจายใดมี $ HOME / .local / bin ใน $ PATH


42

ตัวอย่าง: ใน Ubuntu มี.localไดเรกทอรีอยู่ในไดเรกทอรีภายในบ้านเสมอและ.profileรวมบรรทัดนี้ด้วย:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

$HOME/.local/binไม่มีอยู่โดยค่าเริ่มต้น แต่ถ้ามันถูกสร้างขึ้นมันมีอยู่แล้ว$PATHและสามารถพบไฟล์ที่เรียกทำงานได้ภายใน

นี่ไม่ได้กล่าวถึงอย่างแน่นอนในข้อกำหนดคุณสมบัติของไดเรกทอรี XDGแต่ดูเหมือนว่ามาจากมัน

สิ่งที่ฉันสงสัยคือถ้านี่เป็นเรื่องปกติมากพอที่จะสันนิษฐานได้ว่ามีอยู่ในการกระจายผู้ใช้ทั่วไป มันเป็นเช่นในอนุพันธ์ของ Debian ทั้งหมดหรืออย่างน้อยก็ Ubuntu แล้วระบบนิเวศ Red Hat / Fedora / CentOS ล่ะ? และอื่น ๆ ด้วย Arch, Suse และสิ่งที่ผู้คนใช้กันทุกวันนี้

ที่จะเพิ่มความชัดเจนนี้เป็นเพียงสำหรับ$HOME/.local/bin, ไม่ $HOME/bin

นอกเหนือจากความอยากรู้อยากเห็นรวม BSDs, OS / X และอื่น ๆ หากคุณมีข้อมูล :)


ฉันเคยเห็นคำถามนี้ถามมาก่อน แต่ไม่พบระบบที่ทำสิ่งนี้ ในการสร้างคำถามเฉพาะที่มากกว่าความคิดเห็นคุณอาจขจัดข้อควรพิจารณาของ "สามัญพอ" และเพียงแค่ถามว่ามาจากที่ใดและตัวอย่างของระบบที่ทำเช่นนี้สำหรับบัญชีผู้ใช้ใหม่ "ล่าสุด" Fedora ทำสิ่งนี้เช่น
Thomas Dickey

ฉันสามารถ reword ถามง่ายๆว่า "อันไหน" ทำแน่นอน มันเป็นการดิ้นรนเพื่อกำหนดคำถามเนื่องจากสิ่งที่ฉันตามหลังไม่ใช่คำตอบที่ชัดเจน แต่ส่วนใหญ่รู้สึกว่านี่สามารถสันนิษฐานได้อย่างสมเหตุสมผลในกรณีส่วนใหญ่ 2016
Stoffe

1
ฉันไม่ได้อยู่ในเส้นทางของฉันและแน่นอนฉันจะไม่ใส่มัน (เดเบียน แต่ xdm / fvwm ไม่ใช่ Gnome หรือ KDE เป็นเดสก์ท็อป)
dirkt

1
ฉันตรวจสอบระบบซึ่งอาจมี ไม่มีบัญชีการพัฒนาของฉันที่ใช้bashและผู้ทำแพ็กเกจก็ไม่เพียงพอที่จะแจ้งให้ทราบล่วงหน้าเว้นแต่ฉันจะทำการตรวจสอบพิเศษ (ดูnewpath )
โทมัสผ้ากันเปื้อน

1
IIRC Ubuntu /etc/skel/.profileขึ้นไปและรวมถึงการทดสอบอย่างน้อย 14.04 สำหรับการมีอยู่ของผู้ใช้$HOME/binและเพิ่มลงในPATHถ้ามันมีอยู่; ในทางตรงกันข้าม 16.04 จะปรากฏขึ้นเพื่อเพิ่มทั้งสอง$HOME/binและ$HOME/.local/binไม่มีเงื่อนไข ฉันไม่จำการเพิ่ม Ubuntus ก่อนหน้า$HOME/.local/binได้เลย - แต่ฉันไม่เห็นอะไรที่เกี่ยวข้องในการbashเปลี่ยนแปลงแพ็คเกจ (ซึ่งควรจะเป็นเจ้าของ/etc/skel/.profile)
ขับรถเหล็ก

คำตอบ:


41

~/.localไดเรกทอรีเป็นส่วนหนึ่งของข้อมูลจำเพาะแฟ้มลำดับชั้น systemdและเป็นส่วนขยายของข้อมูลจำเพาะ XDG ใช้ dirs

มันอาจสร้างความสับสนได้เมื่อแพ็กเกจ Debian bashสูญหาย~/.localเส้นทางเมื่อพวกเขากลับไปทุบตี 4.3 พวกเขาทำมันในทุบตี 4.2

มันเป็นข้อผิดพลาดและมีแพทช์นั่งอยู่ในระบบ Debian มานานแล้ว

ข้อผิดพลาดนี้เป็นสาเหตุที่ Ubuntu 16.04 มี ~ / .local ในเส้นทางและ Ubuntu 17.04 ไม่ได้

หากคุณเรียกใช้systemd-pathในฐานะผู้ใช้และคุณจะเห็นว่ามีวัตถุประสงค์เพื่อให้อยู่ในเส้นทาง

$ systemd-path user-binaries
/home/foo/.local/bin

ในทางทฤษฎีคำตอบสำหรับคำถามของคุณคือdistro ใด ๆ ที่ใช้ systemd หรือต้องการรักษาความเข้ากันได้กับ systemd

มีข้อมูลเพิ่มเติมใน file-hierarchy(7)


1
ขอบคุณ! จากความอยากรู้อย่างแท้จริงนี่เป็นกรณีที่เกิดขึ้นจริงหรือไม่? ถามเพียงเพราะหน่วยความจำของฉันบอกว่ามันอยู่ที่นั่นเร็วกว่า systemd แต่มันก็มีแนวโน้มที่ฉันจะจำมันผิด!
Stoffe

ฉันสงสัยว่ามันเป็นมาก่อน systemd ตลอดการประชุมคือ ~ / bin
pfalcon

ยัง, ข้อผิดพลาดนี้ดูเหมือนว่าจะมาถึงใน 16.04 มารยาทของทุบตี backported 4.3
เอเดรีย

ทำงานได้ใน Ubuntu 18.04
Daniel

1

จากความผิดเพี้ยนจาก RPM สถานการณ์ดูเหมือนจะเป็นแบบนี้

  • RHEL 7 - เพิ่มลงในส่วนท้ายของ PATH ดูที่https://bugzilla.redhat.com/show_bug.cgi?id=1583227เมื่อคุณใช้เชลล์ล็อกอิน มันจะใช้งานได้sudo su -l johndoeแต่จะไม่ทำงานหากคุณไม่ได้ใช้-lสวิตช์
  • CentOS 7 - ดู RHEL มันจะติดตาม RHEL เสมอ
  • Fedora 28 (อาจแก่กว่า) - เหมือนกับ RHEL / CentOS ซึ่งถูกเพิ่มเข้าไปที่ส่วนท้ายของ PATH

หากคุณต้องการดูข้อบกพร่องเหล่านั้นเรียงลำดับอย่าลืมโหวต / แสดงความคิดเห็นเพราะสิ่งเหล่านี้จะเน้นความสำคัญของปัญหา

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