ฉันควรใส่สคริปต์ทุบตีของฉันที่ไหน


15

ฉันมีสคริปต์ทุบตีง่าย ๆ สองสามข้อที่ฉันพายด้วยกันสำหรับสิ่งที่ฉันทำอย่างสม่ำเสมอ หนึ่งในนั้นคือเรียกใช้ความซ้ำซ้อนเพื่อทำงานสำรองของฉัน ไม่มีอะไรที่ฉลาดเพียงแค่ .. ถ้าอย่างนั้นงบจริง ๆ เช่นนี้จะต้องทำงานเป็น sudo มันเป็นวิธีที่ดีที่สุดที่จะวางสคริปต์ของฉันใน / usr / bin (หรือสถานที่อื่น ๆ ในเส้นทาง) chown เพื่อ root.root และ chmod ถึง 700?


ฉันจะบอกว่าใช้gitเพื่อควบคุมเวอร์ชันของสคริปต์วางสำเนาของ git repos ในที่ที่คุณต้องการ~จากนั้นก็เชื่อมสคริปต์เข้า~/binด้วยกัน
edwinksl

คุณหมายถึงgitในขณะที่githubอยู่ในเมฆ?
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix หากคุณต้องการให้สคริปต์ของคุณพร้อมใช้งานสำหรับผู้ใช้รายอื่นคุณควรใส่สคริปต์เหล่า/usr/local/binนั้น ~/binมิฉะนั้นผมจะบอกว่าเพียงแค่ใส่ไว้ใน สคริปต์ของคุณในทั้งสองไดเรกทอรีควรปลอดภัยเมื่อคุณอัพเกรด
edwinksl

2
ดังกล่าวข้างต้นวางไว้ใน / usr / local / bin ตรวจสอบให้แน่ใจว่าชื่อสคริปต์ของคุณไม่ซ้ำกันและไม่ใช่ชื่อ / คำสั่ง linux ที่มีอยู่ ตัวฉันเองแค่เพิ่มตัวเลขลงที่ส่วนท้ายของสคริปต์ใด ๆ ที่ฉันสร้างขึ้นเนื่องจากฉันไม่ได้เห็นชื่อลินุกซ์ที่มีอยู่แล้วจบด้วยตัวเลข (ไม่ได้บอกว่าบางคนที่ปิดบังจริงๆอาจ ...
ดั๊ก

1
@edwinksl เกือบหนึ่งปีต่อมาผมต้องบอกว่า~/binเป็นสถานที่ที่ดีที่สุดสำหรับการสคริปต์มากที่สุดเท่าที่คุณจะได้ไม่ต้องใช้การแก้ไขพวกเขาเป็นคุณจะทำอย่างไรเมื่อพวกเขาจะถูกเก็บไว้ในsudo /usr/local/bin
WinEunuuchs2Unix

คำตอบ:


3

/opt/scriptsฉันบันทึกสคริปต์ของตัวเองใน

หากสคริปต์ของคุณควรสามารถเรียกใช้งานได้โดยผู้ใช้ระบบทุกคนคุณสามารถสร้างลิงก์สัญลักษณ์/usr/binได้

ถ้ารูทเท่านั้นควรรันสคริปต์คุณสามารถสร้างลิงก์สัญลักษณ์/usr/sbinได้

คำสั่งเพื่อเพิ่มลิงก์สัญลักษณ์ใน/usr/bin/:

ln -s /opt/scripts/<script> /usr/bin/

คุณสามารถรันสคริปต์ได้เนื่องจาก/usr/bin/อยู่ในPATHของคุณตามค่าเริ่มต้น


1
ฉันอยากจะแนะนำว่าแทนที่จะใช้/usr/binเป็นเป้าหมายสำหรับผู้ใช้ / เชลล์สคริปต์ท้องถิ่น - ว่ามันเป็น/usr/local/bin(หรือ/opt/bin) ตามมาตรฐานระบบไฟล์ Hierarchy Standard - Debian Wikiเพื่อหลีกเลี่ยงความขัดแย้ง
shalomb

ในระบบส่วนใหญ่/usr/local/binแทนที่/usr/binมันตามมาในเส้นทาง นี่เป็นจุดประสงค์เนื่องจากระบบไม่ได้ใส่ไฟล์ไว้ที่นั่นดังนั้นคุณสามารถวางไฟล์ไว้ที่นั่นได้ซึ่ง SHOULD จะแทนที่ระบบที่จัดหาให้
allo

ฉันทำเครื่องหมายว่านี่เป็นคำตอบที่ถูกต้องแม้ว่าทั้งสองคำตอบนั้นดูดี เหตุผลก็คือฉันลองตรวจสอบเอกสาร FHS และทำความเข้าใจว่า / opt อยู่ที่นั่นเพื่อจุดประสงค์นี้อย่างแท้จริง ฉันชอบความคิดของพวกเขาเพียงแค่เชื่อมโยงกับสคริปต์ของฉันใน / usr / local / bin ขอบคุณสำหรับคำแนะนำทั้งหมด
hatterman

17

หากไม่มีผู้ใช้อื่นนอกจากคุณใช้สคริปต์เหล่านี้:

/home/$USER/binจากนั้นคุณสามารถเก็บไว้ใน สร้างbinโฟลเดอร์หากไม่มีและย้ายไฟล์ไปที่นั่น โฟลเดอร์ bin ในบ้านของคุณจะถูกเพิ่มเข้ากับตัวแปรสภาพแวดล้อม PATH โดยอัตโนมัติ รหัสอยู่ใน.profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

ดูวิธีเพิ่ม / home / ชื่อผู้ใช้ / bin ไปยัง $ PATH ได้อย่างไร

หรือในบางระบบอาจอยู่ใน.bashrc:

export PATH=${HOME}/bin/:${HOME}/.local/bin:${PATH}

ขอบคุณพี่ Geek

หากผู้ใช้รายอื่นต้องใช้สคริปต์เหล่านี้:

จากนั้นทั้งสอง/usr/local/binหรือ/opt/binเป็นตัวเลือกที่ดี ดูมีสถานที่มาตรฐานสำหรับการวางสคริปต์ Linux ที่กำหนดเองหรือไม่?

หวังว่านี่จะช่วยได้


3

ฉันมีไดเรกทอรีที่ฉันใช้สำหรับการรวบรวมเครื่องมือท้องถิ่นหรือสิ่งที่ฉันปรับใช้กับคอมพิวเตอร์หลายเครื่อง/usr/local/apolloอย่างรวดเร็ว มีกิ่งไม้จากไดเรกทอรีนี้มีflags, และbinlogs

สำหรับแอปพลิเคชันที่ฉันดาวน์โหลดและติดตั้งนอกที่apt-getเก็บข้อมูลเริ่มต้นจะอยู่ใน/opt/และไดเรกทอรีโดยชื่อของแอปพร้อมไดเรกทอรีย่อยอีกหนึ่งไดเรกทอรีสำหรับแอปพลิเคชันรุ่นที่ระบุ วิธีนี้แอปพลิเคชันเวอร์ชันที่คอมไพล์แล้วของฉันจะเหมือนกับvlcหรือeclipseไม่ขัดแย้งกับเวอร์ชันที่เผยแพร่

การใช้งานของฉัน/optเป็นวิธีการออกแบบอย่างเป็นทางการโดยทั่วไป

โดยวิธีการที่ไดเรกทอรี/usr/local/bin, /usr/local/apolloและ/optรอด OS ทับการติดตั้งรุ่นสด


1
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binฉันชอบความจริงที่/usr/local/binมีอยู่แล้วในเส้นทางที่ไม่มีใครจำได้ ฉันชอบวิธีการของคุณที่/opt/program/versionฉันสามารถใช้สำหรับสิ่งเคอร์เนลฉันได้รับและรวบรวมเช่น EnhanceIO ที่พวกเขาเปลี่ยนสิ่งต่าง ๆ ระหว่างรุ่นเคอร์เนล คือ/apolloเชื่อมโยงไปถึงดวงจันทร์ส่วนบุคคลที่ชื่นชอบหรือไม่ได้มีความหมายอูบุนตู?
WinEunuuchs2Unix

อะไรคือความแตกต่างระหว่าง/usr/local/binและusr/local/sbinหลังที่ได้รับการอบระหว่างการอัพเกรด?
WinEunuuchs2Unix

โปรแกรมติดตั้ง Nukes ไดเรกทอรีที่ใช้ มันสร้าง/usr/localไดเรกทอรีได้อย่างสะดวกแต่ไม่ได้ใส่อะไรเลย ไดเรกทอรีเหล่านั้นถูกบรรจุโดยผู้ใช้ ซอร์สโปรแกรมจำนวนมากภายนอกที่เก็บให้ผู้ใช้มีตัวเลือกในการเลือกตำแหน่งที่ต้องการติดตั้ง เริ่มต้นใน config /usr/local/binไฟล์ที่มี ดังนั้นเนื่องจากเป็นเรื่องธรรมดาที่จะใช้ไดเรกทอรีเหล่านั้นจึงรวมอยู่ในเส้นทางของผู้ใช้ตามค่าเริ่มต้น โดยค่าเริ่มต้นระบบจะตรวจสอบ~/bin และเพิ่มลงในพา ธ หากมีอยู่
LD James

คุณหมายถึงระบบตรวจสอบ~/binในระหว่างการติดตั้งหรือบูตทุกครั้งหรือไม่ ความแตกต่างระหว่างsbinและbinคืออะไร? พวกเขาดูเหมือนจะอยู่ร่วมกันจะต้องมีกฎเสมือนที่คุณเลือกตามประเภทของโปรแกรมใช่ไหม
WinEunuuchs2Unix

1
@ WinEunuuchs2Unix บน~/binเส้นทาง ... จะไม่ถูกเพิ่มระหว่างการติดตั้ง ระบบจะตรวจสอบทุกครั้งที่ลงชื่อเข้าใช้และเพิ่มลงใน $ PATH หากมีอยู่ในระหว่างการเข้าสู่ระบบ ดูที่สองบรรทัดสุดท้ายของ~/.profileการตั้งค่าของคุณ
LD James
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.