ssh üzerinden komut çalıştırılırken nokta dosyası kaynaklanmıyor


11

Programımı etkileşimli olarak çalıştırdığımda iyi çalışıyor:

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

Programımı doğrudan ssh üzerinden çalıştırdığımda çalışmıyor. Değişken PYTHONPATHayarlanmadı, çünkü .bashrckaynaklanmadı.

ssh somehost ~/some/path/somescript.py

Eğer ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py'koşarsam iyi çalışır.

Ancak ikincisi diğer bazı insanlar için işe yaramaz, örneğin tcsh kullanmak ve hiç sahip olmamak ~/.bashrc).

Nedir bütün kabuklar için çalışan başka konak ssh ile bir şey çalıştırmak için komut?


1
Burada yanıtlanan stackoverflow.com/questions/820517/bashrc-at-ssh-login , temel olarak, ssh .bashrc kaynağını sağlamaz, .bashrc'nizi .bash_profile veya diğer seçenekler aracılığıyla kaynaklamanız gerekir.
EightBitTony

1
@EightBitTony: Hayır, bu farklı bir sorun. bzdjamboo'nun sorusu interaktif olmayan bir oturumla ilgilidir.
Gilles 'SO- kötü olmayı kes

Aslında gönderdiğim bağlantıdaki son cevap değerli görünüyor, ssh kaynak .bashrc'yi kullanıyor, ancak etkileşimli olma kontrolü nedeniyle yürütülmüyor. Bununla birlikte, cevabınızın tüm temelleri kapsadığını takdir ediyorum.
EightBitTony

3
@EightBitTony: Bu soruda, kabul edilen cevap asker için iyi bir çözümdür, ancak cevaplar hikayenin tamamını anlatmaz. SSH'nin kendisi hiçbir şey kaynağı değildir. Oturum açma kabuk bash olarak çağrılır ise basho zaman, o kaynaklardan .bash_profileveya .profileetkileşimli bir oturum için, ve .bashrcbir etkileşimli olmayan giriş için. Giriş kabuğunuz bash olarak çağrılırsa shveya ash veya ksh ise, .profileetkileşimli bir giriş kaynağıdır ve etkileşimli olmayan bir giriş için hiçbir şey sağlamaz.
Gilles 'SO- kötü olmayı kes

Yanıtlar:


12

Etkileşimli olmayan girişler için çalıştırılan kullanıcı başına standart bir dosya yoktur. Varsayılan olmayan ortam değişkenlerine bağlı kalmadan bağımlılıklarını bulabilmek için programı kendi kendine yeterli hale getirmeniz veya ortamı tipik olarak

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

Ortam değişkenlerini şu yerlerde ayarlamamalısınız .bashrc: bu dosya etkileşimli kabuklar içindir ve her bash örneğinde okunur. .profileOturum açtığınızda okunan ortam değişkenleri ayarlanmalıdır. Giriş kabuğu olarak Bourne tarzı bir kabuk kullanmayan çok az sayıda insan dışında .profilebash veya zsh kullanıyor olsunlar herkes için çalışır csh veya balık etkileşimli. Ayrıca bkz .bashrc ve .bash_profile arasındaki Fark , hangi kurulum dosyaları bash ile ortam değişkenlerini kurmak için kullanılmalıdır? .

Bununla birlikte, belirli bir anahtarla ssh üzerinden her oturum açışınızda bir komut dosyasını kaynaklamanın bir yolu vardır. Bkz. Ana bilgisayara SSHing yaparken kabuk yapılandırma bilgilerini aktarmanın bir yolu var mı? , sh başlangıç ​​dosyaları ssh .


Şimdi "cevaplandı" olarak nasıl işaretleyebilirim? :-)
bzdjamboo

Bu cevap bölümünün sol tarafında yukarı ve aşağı oy okları ve bir oy sayacı bulunmalıdır. Hemen altında bir onay kutusunun ana hatları bulunmalıdır. Yanıt kabul etme işlevini etkinleştirmek için buna tıklayabilirsiniz.
Caleb

Hepinize tekrar teşekkür ederim, ama görünüşe göre cevaplarınız sorunumu çözmedi.
bzdjamboo

İşte sorunun biraz daha yeni bir formülasyonu ve sorunun kökü hakkındaki mevcut anlayışım.
bzdjamboo

Burada 60'tan fazla karakter ekleyemediğim için sorumu tekrar ayrı ayrı sormam gerekiyor. Üzgünüm ab. söyledi. Yine, bu çözülmedi ve birkaç gün boyunca çok daha fazla kazmak yardımcı olmadı.
bzdjamboo

0

Aynı problemim vardı, ama benim için çözüm farklıydı. Benim kullanıcı bash kabuk olarak kullanmak için yapılandırılmadı, bunun yerine kabuk olarak zsh kullandı, bu nedenle bash dot dosyaları girişte çalıştırılmadı. / Etc / passwd dosyasını bir metin düzenleyicisiyle açın ve kullanıcı adınızı ve hangi kabuğu kullandığını arayın:

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

Kullanıcı girişim böyle görünüyor. / Bin / bash yerine / bin / zsh yazdığına dikkat edin. Zsh için doğru nokta dosyası ~ / .zprofile şeklindedir. İçeriği her ssh kullanarak giriş yaptığınızda çalıştırılacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.