เมื่อฉัน ssh ลงใน ubuntu-box ของฉันที่รัน Hardy 8.04 ตัวแปรสภาพแวดล้อมในตัวฉัน.bashrc
จะไม่ถูกตั้งค่า
ถ้าฉันทำแหล่งข้อมูล.bashrc
ตัวแปรจะถูกตั้งค่าอย่างเหมาะสมและทุกอย่างดี
ทำไม.bashrc
จึงไม่ทำงานเมื่อเข้าสู่ระบบ
.bashrc
กับ.bash_profile
!
เมื่อฉัน ssh ลงใน ubuntu-box ของฉันที่รัน Hardy 8.04 ตัวแปรสภาพแวดล้อมในตัวฉัน.bashrc
จะไม่ถูกตั้งค่า
ถ้าฉันทำแหล่งข้อมูล.bashrc
ตัวแปรจะถูกตั้งค่าอย่างเหมาะสมและทุกอย่างดี
ทำไม.bashrc
จึงไม่ทำงานเมื่อเข้าสู่ระบบ
.bashrc
กับ.bash_profile
!
คำตอบ:
.bashrc
ไม่ได้มีที่มาเมื่อคุณเข้าสู่ระบบโดยใช้ SSH คุณต้องแหล่งที่มาใน.bash_profile
แบบนี้:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
.bashrc
มีการจัดหาเมื่อคุณใช้ SSH
.bashrc
ออกจากกล่อง - แต่มันไม่ได้มาจากไม่.profile
.bash_profile
ฉันมีสถานการณ์ที่คล้ายกันเช่น Hobhouse ฉันต้องการใช้คำสั่ง
ssh myhost.com 'some_command'
และ 'some_command' มีอยู่ใน '/ var / some_location' ดังนั้นฉันจึงพยายามต่อท้าย '/ var / some_location' ในสภาพแวดล้อม PATH โดยแก้ไข '$ HOME / .bashrc'
แต่นั่นไม่ได้ทำงาน เนื่องจากค่าเริ่มต้น. bashrc (Ubuntu 10.4 LTS) ป้องกันไม่ให้มีการจัดหาตามรหัสด้านล่าง
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
ดังนั้นหากคุณต้องการเปลี่ยนสภาพแวดล้อมสำหรับ ssh non-login shell คุณควรเพิ่มโค้ดด้านบนบรรทัดนั้น
bash # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
สำหรับทรัพยากรที่ยอดเยี่ยมเกี่ยวกับวิธีการเรียกใช้ bash สิ่งที่ dotfiles ทำคืออะไรและคุณควรใช้ / กำหนดค่าอย่างไรให้อ่านสิ่งนี้:
หากแก้ปัญหา Ayman ไม่ทำงานลองตั้งชื่อไฟล์ของคุณแทน.profile
.bash_profile
ที่ทำงานให้ฉัน
.profile
จะถูกดำเนินการโดยล็อกอินเชลล์ใด ๆโดยไม่คำนึงว่าเชลล์ดังกล่าวตั้งใจที่จะวางไข่ GUI หรือไม่ ความคิดเห็นของคุณขัดแย้งกับคำถามและคำตอบนี้อย่างชัดเจนซึ่งบ่งชี้อย่างชัดเจนว่า.profile
ถูกเรียกใช้ใน SSHing ซึ่งเป็นวิธีการที่ไม่ใช่ GUI อย่างชัดเจน