.bashrc ไม่ทำงานเมื่อเปิดเทอร์มินัลใหม่


84

รหัสใน. bashrc ไม่ทำงานเมื่อฉันเปิดหน้าต่างเทอร์มินัลใหม่ใน Ubuntu 12.04 ฉันสังเกตเห็นสิ่งนี้เมื่อสร้างไฟล์. bash_aliases นามแฝงไม่ปรากฏขึ้นเมื่อฉันเปิดเทอร์มินัลใหม่ อย่างไรก็ตามเมื่อฉันพิมพ์source .bashrcนามแฝงก็ปรากฏขึ้น

.bashrc ควรทำงานทุกครั้งที่ฉันเปิดหน้าต่างเทอร์มินัลใหม่ใช่ไหม

ฉันจะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร


ลอง. profile แทน
jippie

4
@jippie ไม่.profileอ่านในเวลาล็อกอินไม่ใช่เมื่อคุณเปิดเทอร์มินัลใหม่เว้นแต่ว่ามีการกำหนดค่าผิดที่ Selah: คุณเปลี่ยนแปลงอะไรจากการกำหนดค่าเริ่มต้นหรือไม่ โปรดเรียกใช้ps -o command $$ $PPIDในเทอร์มินัลและคัดลอกวางผลลัพธ์
Gilles

1
เพียงเพื่อให้แน่ใจว่าคุณกำลังวาง.bashrcในโฟลเดอร์บ้านของคุณใช่มั้ย
Jjed

echo $SHELLอาจต้องการตรวจสอบ เรื่องนี้เกิดขึ้นกับฉันและเปลือกเป็น / bin / sh แทนที่จะทุบตี แก้ไขใน / etc / passwd และการทำงาน. bashrc
Joe Flynn

คำตอบ:


128

มันไม่จำเป็นต้องทำงาน ที่ด้านบนของมาตรฐาน. bashrc คือความคิดเห็นนี้:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

ฉันเชื่อว่ามีตัวเลือกในการรัน bash terminal เป็นล็อกอินเชลล์หรือไม่ โดยปกติแล้ว Ubuntu จะใช้ gnome-terminal เป็นเชลล์สำหรับเข้าสู่ระบบดังนั้นจึงควรรัน. bashrc โดยตรง

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

มาตรฐาน~/.profileมีสิ่งนี้อยู่ในนั้น:

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

สิ่งนี้จะทำงาน. bashrc ถ้ามี - สมมติว่ามี $ BASH_VERSION ในสภาพแวดล้อมของคุณ คุณสามารถตรวจสอบสิ่งนี้ได้โดยป้อนคำสั่งecho $BASH_VERSIONและควรแสดงข้อมูลบางอย่างเกี่ยวกับหมายเลขเวอร์ชั่น - ไม่ควรเว้นว่างไว้


4
หลังจากทำความเข้าใจกับคำแนะนำเหล่านี้ฉันไปที่แอพพลิเคชันเทอร์มินัลของฉันฉันไปแก้ไข -> การตั้งค่าโปรไฟล์ -> ชื่อและคำสั่ง -> เรียกใช้คำสั่งเป็นเชลล์การเข้าสู่ระบบ ฉันไม่เลือกตัวเลือกนี้ ขอบคุณสำหรับความช่วยเหลือ
เซลาห์

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

4
โดยปกติจะทำงานเมื่อคุณเริ่มเชลล์การเข้าสู่ระบบใหม่ (ไม่ใช่เซสชันเดสก์ท็อปจริง ๆ เนื่องจากคุณสามารถเรียกใช้เชลล์การเข้าสู่ระบบใหม่จากเซสชันเดสก์ท็อป) ที่ผมกล่าวว่าจะดำเนินการโดยค่าเริ่มต้น แต่ถ้าคุณไม่ได้สร้างหรือ~/.bash_profile ~/.bash_loginคุณสามารถทดสอบโดยการตรวจสอบหรือยกเลิกการทำเครื่องหมายในช่องEdit -> Profile Preferences -> Title and Command -> "Run command as a login shellและออกจากนั้นรันสถานีอีกครั้ง คุณสามารถ echo บางอย่างจาก. profile เพื่อทดสอบ
Marty ผัด

@Selah ความคิดเห็นของคุณช่วยฉันได้มากกว่าคำตอบจริง ๆ ) ขอบคุณมากสำหรับการแสดงความคิดเห็น!
Aleks

ดังนั้นถ้าคุณได้สร้าง~/.bash_profileหรือ~/.bash_loginในระบบของคุณและต้องการที่จะให้พวกเขา แต่ยังคงต้องการ~/.profileและจากนั้น~/.bashrcดำเนินการที่คุณสามารถมาได้จากของคุณเอง~/.bash_profileหรือกับสายที่มี~/.bash_login source "$HOME/.profile"ให้การสนับสนุนเอาต์พุตสีของ ls ในเชลล์ล็อกอิน!
tanius

26

ในกรณีของฉัน.bashrcบรรทัดตัวโหลดหายไป.bash_profile

# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

ฉันเพิ่มมันด้วยตนเองและทำงานกับการเข้าสู่ระบบใหม่ของฉัน


3
.bash_profile? อูบุนตูใช้โดยค่าเริ่มต้นไม่ได้.profile .bash_profile
muru

เซิร์ฟเวอร์อูบุนตูมักจะไม่รับ. bashrc ... ด้านบนใช้งานได้ ... cat .bash_profile [[-s "$ HOME / .bashrc"]] && แหล่งที่มา "$ HOME / .bashrc" # โหลดค่าเริ่มต้น
Scott Stensland

วิธีนี้แก้ไขได้สำหรับฉัน! ฉันเพิ่มpcreและดูเหมือนว่ามันเขียนทับโปรไฟล์ทุบตีแทนการเพิ่ม
shapiro yaacov

7

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

. ~/.bashrc

ยกเว้นว่าเทอร์มินัลของคุณกำลังใช้เชลล์การเข้าสู่ระบบ (ซึ่งไม่ได้เป็นค่าเริ่มต้นใน Ubuntu) ~/.bash_profileจะไม่สามารถอ่านได้ (และจะไม่มีอยู่ตามค่าเริ่มต้นใน Ubuntu)
muru

5

หาก$BASH_VERSIONไม่ได้ตั้งค่าให้ลองใช้คำสั่งการตั้งเปลือกของคุณจะchsh/bin/bash

ฉันมีปัญหาที่คล้ายกันกับ 12.04 LTS และปรากฎว่าบัญชีผู้ใช้ใหม่มีการตั้งค่าเริ่มต้นเปลือก/bin/shซึ่งเป็นสาเหตุของปัญหา


นี่คือเหตุผล!
mulya

1

Accoding ความคิดเห็นใน. profile

~ / .profile: ดำเนินการโดยล่ามคำสั่งสำหรับล็อกอินเชลล์¬ 11 ไฟล์นี้ไม่ได้อ่านโดย bash (1) ถ้า ~ / .bash_profile หรือ ~ / .bash_login¬ 10 #

ดังนั้นมีคุณไปหาก~/.bash_profileหรือ~/.bash_login existsผู้ที่จะได้รับการเรียกใช้แทน~/.profile

หากคุณต้องการเรียกใช้~/.bashrcเพียงเพิ่มบรรทัดsource ~/.bashrcในbash_profile


1
ฉันประสบปัญหาเดียวกันนี้แล้ว ฉัน.bashrcมีที่มาจนกว่าฉันจะสร้าง.bash_profileไฟล์ ดังนั้นฉันจึงต่อsource ~/.bashrc สาย.bash_profileไฟล์ของฉัน
Lashae

0

แทนที่จะทำทุกอย่างที่ทำไปEdit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell"และในกล่องคำสั่งกำหนดเองเขียนbashและปิดมัน ครั้งต่อไปที่คุณเปิดเทอร์มินัลเครื่องก็จะทำงานโดยอัตโนมัติทุบตี


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