Bash ไม่โหลด ".profile" ในเซสชันใหม่บน Linux
ฉันกำลังตั้งค่าเครื่อง Linux ใหม่ที่ได้รับจากแผนกไอทีของเราและสังเกตเห็นว่า.profileไม่มีการโหลดเมื่อฉันเริ่มเซสชันเทอร์มินัลใหม่ เชลล์ปัจจุบันคือBashแม้ว่าฉันจะเปลี่ยนจากค่าเริ่มต้นsh ที่มาพร้อมกับ ฉันจะโหลด.profileเมื่อเริ่มต้นได้อย่างไร
ฉันจะเข้าถึงเปลือกผ่านSSHssh myusername@remotemachine : ฉันมีสิทธิ์ของผู้ดูแลระบบ
คำตอบ
เมื่อเริ่มทุบตีเป็นเปลือกเข้าสู่ระบบแบบโต้ตอบหนึ่งของไฟล์ที่มันอาจจะ~/.profileดำเนินการคือ
เมื่อเริ่มต้นเป็นเชลล์ที่ไม่ใช่ล็อกอินแบบโต้ตอบจะไม่มี มันประมวลผล/etc/bash.bashrc(หากไฟล์นั้นหรือไฟล์ที่คล้ายกันถูกเปิดใช้งานใน Bash เวอร์ชันของคุณ) และ~/.bashrc.
คุณสามารถเพิ่มสิ่งต่อไปนี้ลงในของคุณ~/.bashrc(แต่ระวังลูปหรือค่าที่เปลี่ยนแปลงโดยไม่ได้ตั้งใจ):
. $HOME/.profile
มันขึ้นอยู่กับว่าคุณเริ่มต้นเปลือกของคุณอย่างไร อย่างที่คนอื่นบอกเชลล์ล็อกอินจะโหลดโปรไฟล์ของคุณ (มันจะมองหา. bash_profile ก่อนจากนั้นจะลอง. profile) หากพบสิ่งใดสิ่งหนึ่งก็จะโหลดขึ้นมา เชลล์ที่ไม่ใช่ล็อกอิน (ไม่ว่าจะเป็นแบบโต้ตอบหรือไม่โต้ตอบ) จะเป็นแหล่งที่มาของ. bashrc
ฉันขอแนะนำให้ใส่ทุกอย่างลงใน. bashrc การแยก. profile / .bashrc นั้นเป็นไปตามอำเภอใจและมีความหมายมากกว่าในสมัยก่อนของ UNIX เมื่อ tty ไม่ใช่แค่ชื่ออุปกรณ์และหมายถึง TeleType ที่แท้จริง มันหมายถึงการเริ่มต้นบางสิ่ง (เช่นการเช็คเมล) ในการเข้าสู่ระบบ 'หลัก' ไปยังเซิร์ฟเวอร์และเป็นเพียงการตั้งค่าปกติสำหรับเชลล์อื่น ๆ ใน Linuxes ส่วนใหญ่คุณจะเข้าสู่ระบบในตอนนี้คุณจะไม่ได้ลงชื่อเข้าใช้เชลล์จริงๆเนื่องจากคุณกำลังเข้าสู่อินเทอร์เฟซแบบกราฟิก (KDE, gnome, CDE 'shudder') ขณะนี้ "กระบวนการเข้าสู่ระบบวางไข่" ได้รับการดูแลโดยผู้จัดการเซสชันของคุณแล้ว ตอนนี้มีความเกี่ยวข้องน้อยกว่ามาก
ข้อเสนอแนะของฉัน: ทำให้. profile ของคุณประกอบด้วย:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
 
     เป็นบรรทัดแรกของ. bashrc ป้องกันสิ่งแปลก ๆ ที่เกิดขึ้นเมื่อเรียกใช้สคริปต์ทุบตีโดยการกระโดดออกไปก่อนเวลา:
[[ $- != *i* ]] && return