ฉันรู้ว่ามี/etc/profile
และ/etc/bashrc
ไฟล์สำหรับตั้งค่าตัวแปรสภาพแวดล้อมทั่วโลกและบางทีฉันแค่เข้าใจผิดวัตถุประสงค์ของพวกเขา แต่ ...
มีbash_profile
ไฟล์ทั่วโลกหรือไม่
ฉันใช้ Mac OS X
ฉันรู้ว่ามี/etc/profile
และ/etc/bashrc
ไฟล์สำหรับตั้งค่าตัวแปรสภาพแวดล้อมทั่วโลกและบางทีฉันแค่เข้าใจผิดวัตถุประสงค์ของพวกเขา แต่ ...
มีbash_profile
ไฟล์ทั่วโลกหรือไม่
ฉันใช้ Mac OS X
คำตอบ:
มันไม่ได้เรียกว่าแต่สถานที่ที่เป็นมาตรฐานสำหรับการกำหนดค่าทุบตีทั่วโลกbash_profile
/etc/bash.bashrc
เป็นเรื่องปกติที่จะเรียกสิ่งนี้/etc/profile
ว่า ตัวอย่างเช่น/etc/profile
ฉันมี:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
ในแง่ของการใช้งาน/etc/profile
จัดเตรียมการกำหนดค่าทั้งระบบสำหรับเชลล์ที่ใช้งานร่วมกับ Bourne ได้ทั้งหมด (sh, bash, ksh ฯลฯ ) ปกติแล้วไม่จำเป็นต้องมีสิ่งที่เทียบเท่า/etc/bash_profile
เพราะเจตนาของไฟล์โปรไฟล์คือการควบคุมพฤติกรรมการเข้าสู่ระบบเปลือกหอย โดยปกติแล้วสิ่งที่คุณต้องการจะทำจะไม่เฉพาะเจาะจงทุบตี /etc/bash.bashrc
เฉพาะทุบตีและจะทำงานสำหรับทั้งเปลือกเข้าสู่ระบบและไม่ใช่เข้าสู่ระบบ
สิ่งที่ซับซ้อนต่อไปก็ดูเหมือนว่า OS X /etc/bash.bashrc
ไม่ได้มี นี่อาจเกี่ยวข้องกับความจริงที่ว่าเทอร์มินัลใน OS X เป็นค่าเริ่มต้นให้ทำงานเป็นเชลล์ล็อกอินดังนั้นความแตกต่างจะหายไป:
ข้อยกเว้นสำหรับแนวทางหน้าต่างเทอร์มินัลคือ Terminal.app ของ Mac OS X ซึ่งรันเชลล์การเข้าสู่ระบบตามค่าเริ่มต้นสำหรับแต่ละหน้าต่างเทอร์มินัลใหม่เรียก. bash_profile แทน. bashrc ตัวเลียนแบบเทอร์มินัล GUI อื่นอาจทำเช่นเดียวกัน แต่ส่วนใหญ่มักจะไม่ทำเช่นนั้น
ฉันไม่ได้ใช้ OS X ดังนั้นขอบเขตของความรู้ของฉันจึงอยู่ที่นั่น
/etc/profile
ใน Ubuntu 12.04 สิ่งที่คุณจะแนะนำแทนหากใครต้องการ/etc/profile
ที่จะถูกดำเนินการภายใต้ทุบตีเท่านั้นและไม่มีเปลือกที่รองรับ sh อื่น
/etc/profile
ไฟล์ระบบสำหรับระบบของฉันมีความคิดเห็นที่ด้านบนที่อ่าน: # System-wide .profile for sh(1)
. นี้หมายความว่าprofile
มีที่sh
เฉพาะเจาะจง ไม่sh
ทำงานอย่างใดก่อนbash
?
sh
ถูกดำเนินการสำหรับ, และเชลล์ที่รองรับบอร์นอื่น ๆ ทั้งหมด bash
/etc/profile
sh
bash
/etc/bashrc
ใน mac /etc/bash.bashrc
ไม่ นอกจากนี้ยังปรากฏว่าใช้งานได้/bin/sh
เช่นกัน
/etc/profile
bash_profile
เป็นระดับโลก ไม่มีไฟล์ที่เฉพาะเจาะจงในการทุบตีทุบตีเพียงแค่อ่านไฟล์มาตรฐานที่อ่านโดยเชลล์สไตล์บอร์นทั้งหมด นั่นคือสิ่งที่คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมทั้งระบบ
ดูมีไฟล์เทียบเท่า ".bashrc" ที่เชลล์อ่านทั้งหมดหรือไม่ สำหรับภาพรวมทั่วไปของไฟล์เริ่มต้นทั่วไปของ bash
สิ่งนี้ไม่โหลด/etc/profile
ดังนั้นจึงไม่มีสิ่งใด/etc/profile.d/
ถูกโหลด (ต่างจากล็อกอินเชลล์ดูที่สิ้นสุด)
ไฟล์โกลบอลสำหรับสิ่งนี้คือ / etc / bashrc หรือ /etc/bash.bashrc (ขึ้นอยู่กับการ-DSYS_BASHRC=
ตั้งค่าสถานะในเวลารวบรวม):
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
โดยปกติแล้วควรปล่อยไฟล์นี้ตามที่ควร (เพื่อหลีกเลี่ยงความขัดแย้ง) กลยุทธ์ที่ฉันใช้นั้นคล้ายกับเชลล์ที่ใช้ล็อกอิน (/ etc / profile)
กลยุทธ์ของฉันคือต่อท้ายโหลดเดอร์ไปที่ไฟล์ด้านบน:
# Add new directory analog to /etc/profile.d
mkdir /etc/bashrc.d
# Write the loader to /etc/bash.bashrc (it might be /etc/bashrc on as mentioned above)
cat >> /etc/bash.bashrc << 'EOF'
# I appended this: Load scripts from /etc/bashrc.d
if test -d /etc/bashrc.d; then
for script in /etc/bashrc.d/*.sh; do
test -r "$script" && . "$script"
done
unset item
fi
EOF
ตอนนี้ฉันสามารถเพิ่มการปรับแต่ง n ไปยังไฟล์เชลล์โกลบอลแบบโต้ตอบ (ทุบตี) ได้อย่างง่ายดายโดยใส่ไฟล์. shfiles ใหม่ลงในไดเร็กทอรี /etc/bashrc.d
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
คุณสามารถทำได้ด้วยหนึ่งซับนี้:
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
หากหลังจากอ่านสิ่งนี้แล้วคุณยังไม่มั่นใจให้ทำเช่นนี้เพื่อโน้มน้าวตัวเอง:
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
เปิดเทอร์มินัลอีมูเลเตอร์ใหม่และค้นหาคำทั่วไปในไดเรกทอรีผู้ใช้ของคุณเช่น "the" using grep
grep -r 'the'
ไม่ควรมีสีใด ๆ ทำสิ่งเดียวกันในคอนโซลเสมือนโดยทำ CTRLALTF1 (โปรดจำไว้ว่าเซิร์ฟเวอร์ X ของคุณอาจทำงานที่ CTRLALTF7 เพื่อให้คุณสามารถสลับกลับได้หากลืมให้รีสตาร์ทตัวจัดการเดสก์ท็อปของคุณ)
grep -r 'the'
จะให้ผลลัพธ์สีตามที่ต้องการ
ไม่ควรมีสีใด ๆ ทำสิ่งเดียวกันในคอนโซลเสมือนโดยทำCTRLALTF1(จำไว้ว่าเซิร์ฟเวอร์ X ของคุณอาจทำงานCTRLALTF7เพื่อให้คุณสามารถสลับกลับได้หากลืมให้รีสตาร์ทตัวจัดการเดสก์ท็อปของคุณ)
grep -r 'the'
จะให้ผลลัพธ์สีตามที่ต้องการ
ล็อกอินเชลล์คือสิ่งที่คุณจะได้รับเมื่อคุณบูตเครื่องหรือเปลี่ยนคอนโซลเสมือนCTRLALTF1ผ่านFNthคอนโซลเสมือน
ล็อกอินเชลล์โหลด/etc/profile
ขณะโหลด/etc/profile.d/*.sh
ไฟล์
/etc/bash.bashrc
จากเชลล์ที่ไม่มีการโต้ตอบ/etc/profile
สามารถอ่านได้โดยเชลล์ที่ไม่มีการโต้ตอบ ดูความแตกต่างระหว่างล็อกอินเชลล์และเชลล์ที่ไม่ใช่ล็อกอินใช่หรือไม่