ไม่มีไฟล์ bashrc ในไดเรกทอรีบ้านของฉัน


14

นี่คือสิ่งที่ฉันจดบันทึกไว้จากการบรรยายของฉัน:

  • ค้นหาไฟล์.bashrcในโฮมไดเร็กตอรี่ของคุณ
  • ทำ vi .bashrc
  • เมื่อคุณวางโฟลเดอร์แอปพลิเคชั่นไว้ที่ใดที่หนึ่งตรวจสอบให้แน่ใจว่าที่อยู่นั้นอยู่ในตัวแปรพา ธ

ปัญหาคือฉันไม่มี.bashrcไฟล์ในโฮมไดเร็กตอรี่ของฉัน มี.bash_historyไฟล์ในบ้านของฉันเท่านั้น

ถ้าฉันไปที่รูทมีetc/bash.bashrcไฟล์อยู่ที่นั่น แต่สิ่งที่ฉันคิดคือมันจะทำการเปลี่ยนแปลงสำหรับผู้ใช้ทั้งหมดไม่ใช่สำหรับฉัน ฉันต้องการเพิ่มเส้นทางนี้เพียงเพื่อตัวเอง ไม่ควรส่งผลกระทบต่อผู้อื่น นอกจากนี้ยังไม่มี$PATHตัวแปรในไฟล์ bashrc ดังนั้นฉันจึงสับสนมากขึ้น

คำตอบ:


20

อย่าลืมว่ามันเป็นไฟล์ที่ซ่อนอยู่ในโฮมไดเร็กตอรี่ของคุณ (คุณจะไม่ใช่คนแรกที่ทำls -lและคิดว่ามันไม่มีอยู่)

ทำตาม ...

ls -la ~/ | more

ควรมี.bashrcหน้าแรก ถ้าไม่เพียงสร้างมันด้วย

vi ~/.bashrc

และเขียนบรรทัดต่อไปนี้ลงไป

PATH=$PATH:~/bin

หรือ การกระจายส่วนใหญ่เก็บ.bashrcไฟล์มาตรฐานไว้ใน/etc/skel/คุณสามารถคัดลอกไปยังโฮมไดเร็กตอรี่

$cp /etc/skel/.bashrc ~

ตกลงฉันเข้าใจแล้ว ในคอมพิวเตอร์เครื่องอื่นฉันสามารถพิมพ์เลโก้และซอฟต์แวร์เริ่มทำงานได้ ในระบบของฉันโฟลเดอร์เลโก้อยู่ใน~/data/user1/binโฟลเดอร์ของฉัน ฉันได้เพิ่มเส้นทางนี้ไปยังไฟล์. bashrc ตอนนี้ฉันต้องทำอย่างไรเมื่อฉันพิมพ์เลโก้มันควรเริ่มซอฟต์แวร์หรือไม่ ฉันต้องตั้งค่านามแฝงหรือไม่? ถ้าใช่เป็นอย่างไร alias lego='<What do i put here???>'

@detraveller คุณได้เพิ่ม~/data/user1/binตัวแปรสภาพแวดล้อม PATH ใน.bashrcไฟล์หรือไม่? (เพิ่มบรรทัดนี้:) export PATH=$PATH:~/data/user1/bin- ถ้าเป็นเช่นนั้นคุณควรจะสามารถพิมพ์legoเทอร์มินัลได้และโปรแกรมควรเริ่มทำงาน
กรด

PATH=$PATH:~/data/user1/binฉันเพิ่มเท่านั้น คุณไม่ได้พูดถึงการส่งออกดังนั้นฉันจึงไม่ได้ใส่มัน ฉันจะลองอีกครั้งในวันพรุ่งนี้เมื่อฉันไปที่ Uni
detraveller

แต่ฉันสงสัยว่าฉันจะบอกทุบตีว่าlegoเป็นคำที่เริ่มซอฟต์แวร์ได้อย่างไร
detraveller

11

การแจกแจงส่วนใหญ่เก็บ.bashrcไฟล์มาตรฐานไว้ในตัว/etc/skel/คุณสามารถคัดลอกไปที่ dir บ้านของคุณได้ มิฉะนั้นคุณสามารถสร้าง.bashrcไฟล์เปล่าใหม่ในอุปกรณ์ของคุณเอง


4

สร้างไฟล์เริ่มต้นของคุณเองสำหรับ Interactive Shells

เกี่ยวกับ Bash Startup Files

จากส่วน INVOCATION ของman 1 bashsays:

เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก /etc/bash.bashrc และ ~ / .bashrc หากมีไฟล์เหล่านี้อยู่

โปรดทราบว่าแฟ้มเริ่มต้นเหล่านี้เป็นตัวเลือก ; Bash ไม่ต้องการมัน ทุบตียังแตกต่างระหว่างเปลือกเข้าสู่ระบบและเปลือกโต้ตอบ เชลล์เชิงโต้ตอบถูกกำหนดดังนี้:

เชลล์เชิงโต้ตอบเริ่มต้นหนึ่งโดยไม่มีอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกและไม่มีตัวเลือก -c ซึ่งทั้งอินพุตและข้อผิดพลาดมาตรฐานเชื่อมต่อกับเทอร์มินัล (ตามที่กำหนดโดย isatty (3)) หรือเริ่มด้วยตัวเลือก -i

การแจกแจงจำนวนมากเป็นแหล่งที่มาของไฟล์เริ่มต้นชนิดหนึ่งจากอีกประเภทหนึ่ง แต่บางอันก็ไม่ทำเช่นนั้นดังนั้นปัญหานี้อาจยากที่จะกล่าวถึง คุณต้องตรวจสอบไฟล์เริ่มต้นทั้งหมดของคุณเพื่อดูว่าคุณ~/.bashrcจะถูกเรียกใช้ในระบบของคุณอย่างไรและเมื่อใด

การสร้างไฟล์เริ่มต้นเชลล์แบบโต้ตอบสำหรับผู้ใช้แต่ละราย

หากคุณไม่มี~/.bashrcไฟล์เฉพาะของผู้ใช้ให้สร้างไฟล์ขึ้นมา สิ่งนี้จะถูกเรียกใช้โดย Bash สำหรับเชลล์ที่ไม่ใช่การเข้าสู่ระบบ (เช่นเชลล์เริ่มต้นโดยไม่มี--loginแฟล็ก) หรือเมื่อใดก็ตามที่คุณบังคับให้เชลล์เป็นแบบโต้ตอบโดยการเรียกใช้เชลล์ด้วย-iแฟล็ก


0

หากคุณไม่มี a .bashrcคุณสามารถสร้างและเพิ่มบรรทัดที่คุณต้องการเช่น:

PATH=$PATH:~/bin

เพื่อเพิ่มไดเรกทอรีช่องเก็บผู้ใช้ของคุณไปยังจุดสิ้นสุดของเส้นทาง

แต่คุณควรระวังหากมีไฟล์เริ่มต้นอื่น ๆ กฎเกี่ยวกับไฟล์ที่ถูกใช้มีความซับซ้อน แต่มีรายละเอียดอยู่ในbashman page ใส่ในบรรทัดคำสั่งและมองหาman bashINVOCATION


0

คำตอบสั้น ๆ:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

รายละเอียดที่หนึ่ง:
ฉันทำการตีความตามตัวอักษรที่ใกล้ชิดมากขึ้น

  1. "ค้นหาไฟล์. bashrc ในโฮมไดเร็กตอรี่ของคุณ"
    เนื่องจากมันมีคำสั่งอยู่find, บางทีผู้แก้ไขที่ทุจริตอาจแนะนำให้คุณใช้มัน:

    find ~ -maxdepth 1 -name '.bashrc'

    ค้นหาในโฮมได~เร็กตอรี่, ลงมาหนึ่งระดับเท่านั้น (ไม่มีส่วนย่อย-maxdepth 1) man findสำหรับตัวเลือกทั้งหมดที่เขียน
    บรรทัดด้านล่างจะทำงานให้น้อยที่สุด

    ls ~/.bashrc   

    หมายเหตุ:ในกรณีที่~/.bashrcไม่ได้อยู่ที่คุณสามารถสร้างมันขึ้นมาecho >> ~/.bashrcด้วยความเรียบง่าย

    >>จะสร้างไฟล์ถ้าไม่อยู่ หาก~/.bashrcมีอยู่แทนจะผนวกเฉพาะเอาต์พุตที่ไม่เป็นอันตรายและไม่มีการลบechoซึ่งจะหลีกเลี่ยงการลบไฟล์สำคัญเช่นนั้นโดยไม่ได้ตั้งใจซึ่งเป็นการยากที่จะกู้คืนโดยไม่มีการสำรองข้อมูล

    (ต่อไปนี้เป็นเพราะฉันไม่ค่อยจะให้เกียรติกับความหมายของชื่อเล่นของฉันไม่ได้ดำเนินการถ้าคุณมีข้อสงสัย)

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
  2. "ทำvi .bashrc"
    ตอนนี้คุณทำได้vi ~/.bashrcแล้วกับดักที่นี่คือคุณต้องกด:และqออก!

  3. โฟลเดอร์แอปพลิเคชันและ$PATH
    เมื่อคุณสร้างโฟลเดอร์แอปพลิเคชันเช่น~/MyNewCoolProgramFolderบรรทัดด้านล่างจะตรวจสอบว่าอยู่ใน$PATH:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    คุณไม่จำเป็นต้องเพิ่มถ้ามีอยู่แล้ว หากจำเป็นคุณสามารถเพิ่มไปยัง$PATHด้วย

    PATH=$PATH:~/MyNewCoolProgramFolder

    และเพิ่มบรรทัดนั้น~/.bashrcหากคุณต้องการทำให้ถาวร

  4. "4?!? วิธี 4 ถ้ามีเพียง 3 คะแนน?" - วิธีแก้ปัญหา
    มีวิธีแก้ไขปัญหาบางอย่างสำหรับหลัง สมมติว่าไฟล์ปฏิบัติการที่CoolDetravellerมีชื่อมีอยู่ในโฟลเดอร์แอปพลิเคชันใหม่ของคุณเท่านั้น:

    (a) คุณสามารถลองดำเนินการได้ $PATHเพียงแค่มันจะไม่เริ่มต้นถ้ามันไม่ได้อยู่ใน

    CoolDetraveller: ไม่พบคำสั่ง

    (b) คุณสามารถลองการเติมอัตโนมัติได้ เริ่มต้นที่จะเขียนและกดCoolDetravelle Tabถ้ามันอยู่ใน$PATHนั้นมันจะเสร็จสมบูรณ์โดยอัตโนมัติ (เสมอถ้าเปิดใช้งานการเติมอัตโนมัติ)

    (ค) คุณสามารถขอให้เปลือกทุบตีคำสั่งจะถูกใช้ถ้าคุณเขียนคำสั่งwhichCoolDetraveller

        which CoolDetraveller

    หมายเหตุ: หากในเส้นทางใบสมัครของคุณมีหนึ่งหรือมากกว่าหนึ่งช่องว่างwhichอาจจะไม่สามารถที่จะหาCoolDetravellerแม้ว่า (นี่ผมให้เกียรติชื่อเล่นของฉันอีกครั้ง) เดอะเสร็จอัตโนมัติของ CoolDetravellerเป็นพารามิเตอร์ที่ถูกต้องของwhichคำสั่งที่จะทำงาน!

    คลื่นไส้โฆษณา : คุณไม่สามารถถามได้whereis CoolDetravellerเพราะwhereis

    มีเส้นทางที่กำหนดค่าตายตัวดังนั้นอาจไม่พบสิ่งที่คุณต้องการเสมอไป

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