เมื่อ tmux เริ่มหรือเปิดหน้าต่างใหม่จะไม่โหลด my .profileor .bashrc. ฉันลงท้ายด้วยการพิมพ์. ~/.bashrcทุกครั้ง มีวิธีทำให้สิ่งนี้เกิดขึ้นโดยอัตโนมัติหรือไม่?
เมื่อ tmux เริ่มหรือเปิดหน้าต่างใหม่จะไม่โหลด my .profileor .bashrc. ฉันลงท้ายด้วยการพิมพ์. ~/.bashrcทุกครั้ง มีวิธีทำให้สิ่งนี้เกิดขึ้นโดยอัตโนมัติหรือไม่?
คำตอบ:
ใช่ในตอนท้ายของคุณ.bash_profileให้วางบรรทัด:
. ~/.bashrc
ซึ่งจะเป็นแหล่งที่มาของไฟล์ rc โดยอัตโนมัติภายใต้สถานการณ์เหล่านั้นซึ่งโดยปกติจะประมวลผลเฉพาะโปรไฟล์
กฎเมื่อbashเรียกใช้ไฟล์บางไฟล์มีความซับซ้อนและขึ้นอยู่กับประเภทของเชลล์ที่เริ่มทำงาน (ล็อกอิน / ไม่ล็อกอินโต้ตอบหรือไม่เป็นต้น) พร้อมด้วยอาร์กิวเมนต์บรรทัดคำสั่งและตัวแปรสภาพแวดล้อม
คุณสามารถดูได้ในman bashผลลัพธ์เพียงแค่มองหาINVOCATION- คุณอาจต้องใช้เวลาในการย่อยและถอดรหัสแม้ว่า :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
การรัน bash ใช้ได้ผลอย่างชัดเจนสำหรับฉันโดยเพิ่มบรรทัดนี้ในไฟล์ ~ / .tmux.conf ของฉัน:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf : set -g default-command "/bin/bash". ขอบคุณเพื่อน
คำตอบเดิมให้คำตอบ แต่ไม่ได้อธิบายเหตุผล นี่คือ.
สิ่งนี้เกี่ยวข้องกับไฟล์ Bash init โดยค่าเริ่มต้น~/.bashrcจะใช้ในเชลล์แบบโต้ตอบและไม่ใช่ล็อกอิน จะไม่มีที่มาในเชลล์ล็อกอิน Tmux ใช้ล็อกอินเชลล์ตามค่าเริ่มต้น ดังนั้นเปลือกหอยที่ตั้งขึ้นโดย tmux ~/.bashrcเฮี๊ยบ
default-commandคำสั่งเชลล์ค่าดีฟอลต์คือสตริงว่างซึ่งสั่งให้ tmux สร้างล็อกอินเชลล์โดยใช้ค่าของ
default-shellอ็อพชัน
ไฟล์เริ่มต้นสำหรับ Bash
/etc/profile~/.bash_profile, ~/.bash_login, ~/.profile(เฉพาะครั้งแรกที่มีอยู่)/etc/bash.bashrc (Linux บางตัวไม่ใช่บน Mac OS X)~/.bashrc$BASH_ENVข้อกำหนดการโหลดแบบอินเทอร์แอคทีฟแบบไม่ต้องล็อกอินแปลก ๆ ทำให้ผู้คนสับสนในสถานการณ์อื่น ๆ เช่นกัน ทางออกที่ดีที่สุดคือการเปลี่ยนความต้องการโหลด~/.bashrcเป็นแบบโต้ตอบเท่านั้นซึ่งเป็นสิ่งที่ distros บางอย่างเช่น Ubuntu กำลังทำ
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
นี่ควรเป็นทางออกที่คุณปรารถนา และฉันขอแนะนำให้ผู้ใช้ Bash ทุกคนตั้งค่าสิ่งนี้ในโปรไฟล์
อ้างอิง
man tmuxจากหัวข้อนี้:
ดูเหมือนว่าการใช้.bash_profileจะได้ผล
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
วิธีแก้ปัญหาที่เหมาะกับฉันมีดังต่อไปนี้:
.bash_profileไฟล์ถ้าคุณไม่มีใน~.bash_profileใส่source ~/.bashrcหรือsource ~/.profileตอนนี้ปัญหาควรได้รับการแก้ไขแล้ว
ฉันมีปัญหาเดียวกันและวิธีแก้ปัญหาก็ไม่ได้ผลสำหรับฉัน วิธีการแก้ปัญหาที่จบลงด้วยการทำงานสำหรับฉันสามารถพบได้ที่นี่
ในระยะสั้นtmuxwindows / sessions ใช้ล็อกอินเชลล์ซึ่งจะค้นหา~/.profileไฟล์อื่น ๆ เมื่อเริ่มทำงาน
สิ่งที่ฉันต้องการคือให้ zsh เริ่มต้นด้วยแต่ละtmuxหน้าต่างใหม่ดังนั้นฉันจึงใส่exec zshที่ด้านล่างของ~/.profileไฟล์.