ไฟล์ dot ไม่ได้รับมาเมื่อรันคำสั่งผ่าน ssh


11

เมื่อฉันเรียกใช้โปรแกรมแบบโต้ตอบมันทำงานได้ดี:

ssh somehost
$ ~/some/path/somescript.py

เมื่อฉันรันโปรแกรมผ่าน ssh โดยตรงมันไม่ทำงาน PYTHONPATHไม่ได้ตั้งค่าตัวแปรเนื่องจาก.bashrcไม่ได้มีการจัดหา

ssh somehost ~/some/path/somescript.py

ถ้าฉันวิ่งssh somehost 'source ~/.bashrc; ~/some/path/somescript.py'ก็ใช้งานได้ดี

แต่หลังจะไม่ทำงานสำหรับคนอื่น ๆ เช่นใช้ tcsh และไม่มี~/.bashrcเลย)

คืออะไรคำสั่งเพื่อเรียกใช้สิ่งที่ผ่าน SSH บนโฮสต์ที่ทำงานสำหรับเปลือกหอยทั้งหมดอื่นได้หรือไม่


1
ตอบที่นี่, stackoverflow.com/questions/820517/bashrc-at-ssh-login , โดยทั่วไป, ssh ไม่ได้แหล่งที่มา. bashrc, คุณต้องจัดหา. bashrc ของคุณผ่าน. bash_profile หรือตัวเลือกอื่น ๆ
EightBitTony

1
@EightBitTony: ไม่นั่นเป็นปัญหาที่แตกต่าง คำถามของ bzdjamboo เกี่ยวกับเซสชันที่ไม่โต้ตอบ
Gilles 'ดังนั้นหยุดความชั่วร้าย'

จริงๆแล้วคำตอบสุดท้ายในลิงค์ที่ฉันโพสต์นั้นมีค่า ssh ทำหน้าที่. bashrc แต่ก็ไม่ได้ดำเนินการเนื่องจากการตรวจสอบว่าเป็นแบบโต้ตอบ อย่างไรก็ตามฉันขอขอบคุณที่คำตอบของคุณครอบคลุมฐานทั้งหมด
EightBitTony

3
@EightBitTony: สำหรับคำถามนั้นคำตอบที่ยอมรับนั้นเป็นทางออกที่ดีสำหรับผู้ถาม แต่คำตอบไม่ได้บอกเรื่องราวทั้งหมด SSH เองไม่ได้แหล่งข้อมูลใด ๆ ถ้าเปลือกเข้าสู่ระบบของคุณจะถูกทุบตีเรียกว่าเป็นbashแล้วมันแหล่งที่มา.bash_profileหรือ.profileสำหรับการเข้าสู่ระบบโต้ตอบและ.bashrcสำหรับการเข้าสู่ระบบไม่โต้ตอบ หากเชลล์ล็อกอินของคุณถูก bash ถูกเรียกใช้เป็นshหรือ ash หรือ ksh ก็จะเป็นแหล่ง.profileสำหรับการเข้าสู่ระบบแบบโต้ตอบและไม่มีอะไรสำหรับการเข้าสู่ระบบแบบไม่โต้ตอบ
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


12

ไม่มีไฟล์ต่อผู้ใช้มาตรฐานที่เรียกใช้สำหรับการเข้าสู่ระบบที่ไม่ใช่แบบโต้ตอบ คุณต้องทำให้โปรแกรมอยู่ในตัวเองเพื่อให้สามารถค้นหาการพึ่งพาได้โดยไม่ต้องพึ่งพาตัวแปรสภาพแวดล้อมที่ไม่ใช่ค่าเริ่มต้นหรืออย่างอื่นตั้งสภาพแวดล้อมอย่างชัดเจน

ssh somehost '. ~/.profile; exec ~/some/path/somescript.py'

คุณไม่ควรตั้งค่าตัวแปรสภาพแวดล้อมใน.bashrc: ไฟล์นี้มีไว้สำหรับเชลล์แบบโต้ตอบและอ่านในแต่ละอินสแตนซ์ของ bash ควรตั้งค่าตัวแปรสภาพแวดล้อม.profileซึ่งจะถูกอ่านเมื่อคุณเข้าสู่ระบบนอกเหนือจากคนจำนวนน้อยมากที่ไม่ได้ใช้เชลล์สไตล์ Bourne เป็นเชลล์ล็อกอินของพวกเขา.profileจะทำงานให้กับทุกคนไม่ว่าจะใช้ bash หรือ zsh หรือ csh หรือปลาแบบโต้ตอบ ดูเพิ่มเติม ความแตกต่างระหว่าง .bashrc และ .bash_profile , ซึ่งแฟ้มการติดตั้งควรจะใช้สำหรับการตั้งค่าตัวแปรสภาพแวดล้อมที่มีการทุบตี? .

ที่ถูกกล่าวว่ามีวิธีที่มาสคริปต์ทุกครั้งที่คุณเข้าสู่ระบบผ่าน ssh ด้วยคีย์เฉพาะ ดูมีวิธีการพุชข้อมูลเชลล์เมื่อ SSHing ไปยังโฮสต์หรือไม่ , SH เริ่มต้นไฟล์ผ่าน SSH


ตอนนี้ฉันจะทำเครื่องหมายว่า "ตอบ" อย่างไร :-)
bzdjamboo

ทางด้านซ้ายของส่วนคำตอบนี้ควรจะมีลูกศรโหวตขึ้นและลงและตัวนับคะแนน ด้านล่างนี้ควรมีเค้าร่างของกล่องกาเครื่องหมาย คุณสามารถคลิกที่เพื่อเปิดใช้งานฟังก์ชั่นตอบรับ
คาเลบ

ขอบคุณอีกครั้ง แต่คำตอบของคุณไม่ได้แก้ปัญหาของฉัน
bzdjamboo

นี่คือการกำหนดปัญหาใหม่และความเข้าใจปัจจุบันของฉันเกี่ยวกับรากของมัน
bzdjamboo

ดูเหมือนว่าฉันไม่สามารถเพิ่มตัวอักษรเกิน 60 ตัวอักษรดังนั้นฉันจึงต้องถามคำถามแยกต่างหากอีกครั้ง ขอโทษด้วย ที่. อีกครั้งคนนี้ไม่ได้รับการแก้ไขและการขุดมากขึ้นสำหรับสองสามวันไม่ได้ช่วย
bzdjamboo

0

ฉันมีปัญหาเดียวกัน แต่สำหรับฉันทางออกแตกต่างกัน ผู้ใช้ของฉันไม่ได้กำหนดค่าให้ใช้ bash เป็นเชลล์ใช้ zsh เป็นเชลล์แทนดังนั้นไฟล์ bash dot จึงไม่ได้ทำงานเมื่อเข้าสู่ระบบ เปิด / etc / passwd ด้วย text editor แล้วมองหาชื่อผู้ใช้ของคุณและใช้เชลล์อะไร:

root:x:0:0:root:/root:/bin/zsh

นี่คือลักษณะที่รายการผู้ใช้ของฉันมีลักษณะ สังเกตว่ามันบอกว่า / bin / zsh แทนที่จะเป็น / bin / bash สำหรับ zsh ไฟล์ dot ที่ถูกต้องคือ ~ / .zprofile เนื้อหาจะถูกเรียกใช้ทุกครั้งที่คุณเข้าสู่ระบบโดยใช้ ssh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.