ทำไมบางแอปพลิเคชันใช้ ~ / .config / appname สำหรับข้อมูลการกำหนดค่าของพวกเขาในขณะที่คนอื่นใช้ ~ / .appname?


37

ฉันสังเกตเห็นว่าบางแอปพลิเคชันนำไฟล์การตั้งค่าไปใช้~/.config/appnameขณะที่บางแอปพลิเคชันใช้~/.appname(ในแบบคลาสสิก AFAIK) สำหรับสิ่งนี้ ความรู้สึกในความแตกต่างนี้และสิ่งที่จะดีกว่าที่จะพิจารณาสำหรับการใช้งานของฉัน?

อัปเดต: ดูเหมือนว่า (ค่าเริ่มต้น XUbuntu 11.10) ของฉัน $ XDG_CONFIG_HOME ถูกตั้งค่าเป็น~/และแอปพลิเคชั่นส่วนใหญ่ในระบบของฉัน (เช่น Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, ฯลฯ ) ปฏิบัติตามสิ่งนี้ แต่ยังมีแอปพลิเคชั่นมากมาย (เช่น Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE และอื่น ๆ ) ที่ใช้~/.config/แทน อีกสิ่งที่น่าสงสัยก็คือไดเรกทอรีที่อยู่ใน~/.config/นั้นไม่ถูกซ่อน (ไม่มีจุดในชื่อ) - ไม่ใช่แอปพลิเคชันที่คาดว่าจะมีชื่อคงที่โดยไม่ขึ้นอยู่กับตำแหน่ง (ค่า $ XDG_CONFIG_HOME)

คำตอบ:


44

ส่วนประกอบของคำตอบที่ยอดเยี่ยมของ jasonwryan โดยกล่าวถึงปัญหาของคุณ:

  • คุณ$XDG_CONFIG_HOMEจะไม่ได้~/ตั้งค่าให้ มันไม่ได้ตั้งค่า ดังนั้นแอปพลิเคชันที่เป็นไปตามข้อกำหนด XDG จึงใช้ค่าเริ่มต้น~/.config

  • พวกที่อยู่ข้างใน/.configนั้นไม่ได้ถูกซ่อนเพราะพวกเขาไม่ต้องทำ จุดรวมของการใช้~/.configdir คือการยกเลิกการถ่วง$HOMEของผู้ใช้ เนื่องจากพวกเขาอยู่ใน dir แยกต่างหากที่ซ่อนอยู่จึงไม่จำเป็นต้องซ่อนอยู่ภายใน

  • ซอฟแวร์ที่ไม่เป็นไปตามสเปค (น่าเสียดายที่ยังคงเป็นส่วนใหญ่) ใช้ dir ซ่อนสำหรับการตั้งค่าของพวกเขา (ชอบ~/.myapp) เป็นความพยายาม$HOMEที่จะไม่ถ่วงของผู้ใช้ มันทำงานได้ดี แต่ก็ยังคงเป็นวิธีที่ไม่ดีเช่นคุณพยายามสำรองข้อมูลการตั้งค่าและ "ข้อมูลขนาดใหญ่" ของคุณ (เช่นรูปภาพวิดีโอเพลง) แยกจากกัน การมีการตั้งค่าทั้งหมดในที่เดียวโดยไม่ต้องผสมกับข้อมูลของผู้ใช้เป็นวิธีที่ดีกว่ามาก

  • สำหรับ"มีชื่อคงที่โดยไม่คำนึงถึงXDG_CONFIG_HOMEจุดที่"พวกเขาทำ: มันappname ไม่มีจุดนำ เตือนความจำ: สิ่งที่ใช้$HOME/.appnameนั้นเป็นสิ่งที่ละเลย XDG Spec พวกเขาใช้เส้นทางฮาร์ดโค้ด

  • สำหรับแอปพลิเคชันของคุณโปรดใช้มาตรฐาน XDG ! ฉันขอร้องคุณและผู้ใช้ของคุณจะบอกว่าขอบคุณสำหรับคุณที่ไม่ได้ยุ่งกับ $ HOME อีกต่อไป


4
แค่อยากจะบอกว่าคำตอบของคุณยอดเยี่ยมที่สุด ! ภูมิปัญญาดั้งเดิมมีประโยชน์อย่างยิ่งและคะแนนของคุณได้รับการอธิบายเป็นอย่างดี :) ขอบคุณ!
Steve Benner

ความแตกต่างระหว่างรายการของไฟล์ที่ซ่อนอยู่ในไดเรกทอรี HOME และรายการของไฟล์ที่ไม่ซ่อนอยู่ในไดเรกทอรีการกำหนดค่าที่ซ่อนอยู่ที่ไหน สำหรับฉันมันกว้างพอ ๆ กับมันยาว
ceving

@ceving: ฉันเห็นความแตกต่างที่สำคัญ 2 อย่างคือเครื่องสำอางและสิ่งที่ใช้งานได้จริง: จาก$HOMEมุมมองของคุณมันเป็น~/.configรายการเดียวแทนที่จะเป็นหลาย ๆ อย่างบางทีอาจจะเป็นหลายสิบ และทำให้การสำรองข้อมูลการตั้งค่าของคุณ (หรือไม่รวมพวกเขา) ง่ายกว่ามาก! คุณจะบอกแยกการตั้งค่าซอฟต์แวร์จากพูด~/Documentsหรือของคุณได้~/.cacheอย่างไร?
MestreLion

24

เนื่องจากแอปพลิเคชันเหล่านั้นที่วางไฟล์การกำหนดค่า$HOMEไม่สนใจข้อมูลจำเพาะไดเรกทอรีฐาน XDG โดยเฉพาะ:

มีไดเร็กทอรีฐานเดียวที่สัมพันธ์กับไฟล์การกำหนดค่าเฉพาะผู้ใช้ที่ควรเขียน ไดเร็กทอรีนี้ถูกกำหนดโดยตัวแปรสภาวะแวดล้อม $ XDG_CONFIG_HOME ...

หาก $ XDG_CONFIG_HOME ไม่ได้ถูกตั้งค่าหรือว่างเปล่าควรใช้ค่าเริ่มต้นเท่ากับ $ HOME / .config

ดูเหมือนว่า (Xubuntu 11.10 ค่าเริ่มต้น) ของฉัน$XDG_CONFIG_HOMEถูกตั้งค่าให้~/แต่ยังคงมีการใช้งานมากใช้~/.config/
อีวาน

3
คำตอบนี้ยังไม่สมบูรณ์ ดูเหมือนว่าจะบ่งบอกว่าสเปคนั้นมีมาตั้งแต่วันแรกและเป็นเพียงแอพที่ไม่ได้สนใจตั้งแต่เริ่มต้น แต่จริงๆแล้วมีบางแอพพลิเคชั่นที่ใช้งานได้นานกว่า XDG มาก
Ruslan

รุ่น 0.7 มาตรฐานการกวี นั่นจะต้องมีความสำคัญจริงๆ ใครสามารถอธิบายปัญหาที่มาตรฐานแก้ได้บ้าง
ceving

@Ruslan: มันมีมาตั้งแต่ปี 2003 นั่นเป็น15 ปีที่ผ่านมา! จริงอยู่ที่ไม่ใช่วันแรกและซอฟต์แวร์จำนวนมากถูกสร้างขึ้นก่อนหน้านั้น แต่ซอฟต์แวร์ดังกล่าวมีแนวโน้มที่จะมีการอัปเดตจำนวนมากที่ยังคงมีการใช้งานอยู่ในปัจจุบันดังนั้นจึงปลอดภัยที่จะกล่าวว่าซอฟต์แวร์ที่ไม่ได้ย้ายไปยังมาตรฐาน XDG จงใจเลือกที่จะเพิกเฉย
MestreLion

@ceving: มันแก้ปัญหาการจัดระเบียบ dirs ของผู้ใช้ในลักษณะเดียวกัน/คือการจัดระเบียบ: ไม่ได้ผสมข้อมูลกับไฟล์ปฏิบัติการที่มีการกำหนดค่า ~/.configเป็นคู่ของผู้ใช้/etcและสิ่งนี้ช่วยในการสำรองข้อมูลอย่างมาก หากไม่มี/.configการสำรองข้อมูลการตั้งค่าใด ๆ จะต้องรวมแอปทั้งหมดด้วยตนเองหรือยกเว้นผู้ใช้ "บิ๊กดาต้า" dirs ด้วยตนเอง (วิดีโอ, เพลง, และ dirs ส่วนตัวอื่น ๆ ที่เขาอาจสร้างขึ้น)
MestreLion

7

คำตอบที่ขัดแย้งกันมากขึ้นคือ:

  • ~/.configเป็นค่าเริ่มต้นสำหรับมาตรฐาน XDG ซึ่งใช้เฉพาะกับแอปพลิเคชันที่ยึดตามมาตรฐาน FreeDesktop.org (เช่นเดียวกับการใช้$XDG_CONFIG_HOMEตัวแปร)
  • ~/.appname มีอยู่ก่อนมาตรฐาน freedesktop
  • ไม่ใช่ทุกคนที่ชอบมาตรฐาน freedesktop
  • "ความยุ่งเหยิง" $HOMEไม่ใช่ปัญหาในความคิดของฉัน

2
นั่นไม่ใช่คำตอบที่ขัดแย้งกันมันเป็นสิ่งที่ทำให้เข้าใจผิดและเข้าใจผิดธรรมดา: - ปัจจุบันฉันมี 120 ไดเรกทอรีที่~/.configจากแอปพลิเคชันที่ไม่มีความเกี่ยวข้องกับ FreeDesktop.org เช่น Libre Office, Chromium, Deluge, เกมจำนวนมาก (รวมถึง แต่ไม่ เฉพาะเกมทั้งหมดที่ใช้ Unity3D), แอป Google (Chrome, Earth), Python stuff (IPython, Eric), Emulators (Muppen 64, Desmune) FreeDesktop.org นั้นมีแอปพลิเคชั่นน้อยมาก - ~/.appnameเป็นข้อตกลงที่มีอยู่ก่อน XDG แต่ซอฟต์แวร์ส่วนใหญ่ที่ยังคงใช้อยู่ในปัจจุบันถูกสร้างขึ้นหลังจากมาตรฐาน
MestreLion

5
- จากมุมมองของนักพัฒนาซอฟต์แวร์ไม่มีอะไรที่จะชอบหรือไม่ชอบในมาตรฐานของไดเรกทอรีมันเพียงแค่เปลี่ยนค่าคงที่บันทึกของคุณจาก$HOME/.myappไปเป็น${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion

ยังคงเป็นมาตรฐาน freedesktop ที่กำหนดไว้ที่นี่: Specifications.freedesktop.org/basedir-spec/ …และแอปพลิเคชันใดที่ไม่ควรใช้โดยไม่ต้องการ ไม่ใช่ทุกคนที่พิจารณาว่าการแยกออกเป็น. config จำเป็น
เดวิดการ์ดเนอ

จริง แต่หมายถึงว่าแอปพลิเคชันที่เป็นไปตามมาตรฐานเป็นอย่างใด "แอปพลิเคชัน FreeDesktop.org" นั้นทำให้เข้าใจผิดมาก
MestreLion

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