เมื่อ tmux เริ่มหรือเปิดหน้าต่างใหม่จะไม่โหลด my .profile
or .bashrc
. ฉันลงท้ายด้วยการพิมพ์. ~/.bashrc
ทุกครั้ง มีวิธีทำให้สิ่งนี้เกิดขึ้นโดยอัตโนมัติหรือไม่?
เมื่อ tmux เริ่มหรือเปิดหน้าต่างใหม่จะไม่โหลด my .profile
or .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
ตอนนี้ปัญหาควรได้รับการแก้ไขแล้ว
ฉันมีปัญหาเดียวกันและวิธีแก้ปัญหาก็ไม่ได้ผลสำหรับฉัน วิธีการแก้ปัญหาที่จบลงด้วยการทำงานสำหรับฉันสามารถพบได้ที่นี่
ในระยะสั้นtmux
windows / sessions ใช้ล็อกอินเชลล์ซึ่งจะค้นหา~/.profile
ไฟล์อื่น ๆ เมื่อเริ่มทำงาน
สิ่งที่ฉันต้องการคือให้ zsh เริ่มต้นด้วยแต่ละtmux
หน้าต่างใหม่ดังนั้นฉันจึงใส่exec zsh
ที่ด้านล่างของ~/.profile
ไฟล์.