ssh login şirketinde .bashrc


374

Hardy 8.04 çalıştıran benim ubuntu-box içine ssh zaman, benim ortam değişkenleri .bashrcayarlanmamış.

Bir kaynak yaparsam .bashrc, değişkenler düzgün ayarlanır ve her şey yolunda.

Girişte neden gelmiyor .bashrc?


92
Bu "konu dışı" nasıl?
Jonah

8
Böyle katı değilim, ama tahminim bu serverfault.com, superuser.com veya askubuntu.com'a ait
Michael Butler

16
@MichaelButler Kabul etti. Neden kapatmak yerine onu hareket ettirmediklerini merak ediyorum ...
Luc

4
@Luc - Sorular yalnızca oluşturulduktan sonraki 60 gün içinde taşınabilir. Bu soru oluşturulduktan 3 buçuk yıl öncesine kadar konu dışı olarak kapatılmadı. 60 günlük kuralın soru veritabanları yedeklendiğinde veya bununla ilgili bir şeyleri olduğuna inanıyorum ... bu yedekleme gerçekleştikten sonra taşınması zorlaşıyor.
ArtOfWarfare

Bunun oldukça faydalı bir soru olduğunu düşündüm. Makine B'ye ssh yapmak için A makinesine ssh gerektiğimde bu sorunla karşılaştım (yalnızca A'nın yerel ağı üzerinden erişilebilir). Bana .bashrcve arasındaki pratik farkı öğretti .bash_profile!
information_interchange

Yanıtlar:


620

.bashrcSSH kullanarak oturum açtığınızda kaynak oluşturulmaz. Bu şekilde kaynak gerekir .bash_profile:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

32
Bu Bash ile herhangi bir aklı başında dağıtım üzerinde çalışması gerekir, bu nedenle tüm bu yorumlar eski :)

1
Ubuntu 12.04 LTS sunucusunda bu gerekli değildir, çünkü .bashrcSSH girişi varsayılan olarak yapılır.
orokusaki

4
@orokusaki: Düzeltme, bu :) .profile'ı atlamaya zorlayan dolandırıcı bir .bash_profile dosyası vardı.
Lester Peabody

4
@LesterPeabody gibi, benim .bashrc'm, sahte bir .bash_profile nedeniyle bir Ubuntu 12.04 LTS sunucusundan kaynaklanmıyordu. RVM kurulumu tarafından oluşturuldu. RVM komutunu .profile klasörüne taşıdım ve .bash_profile dosyasını sildim. Şimdi hepsi iyi çalışıyor.
Rod Daunoravicius

4
fwiw Debian Jessie / 8 halihazırda .bashrckutudan çıkıyor - ama bunu yapıyor .profile, değil .bash_profile.
underscore_d

75

Hobhouse gibi benzer bir durum yaşadım. Komut kullanmak istedim

 ssh myhost.com 'some_command'

ve 'some_command' '/ var / some_location' da var, bu yüzden '$ HOME / .bashrc' düzenleyerek PATH ortamında '/ var / some_location' ifadesini eklemeye çalıştım

ama bu işe yaramıyordu. çünkü varsayılan .bashrc (Ubuntu 10.4 LTS) aşağıdaki gibi kodla kaynak yapılmasını önler

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

ssh olmayan oturum açma kabuğu için ortam değiştirmek istiyorsanız. bu satırın üstüne kod eklemelisiniz.


7
Teşekkürler dostum! Bu benim için işe yaramadı biraz :)
Raymond Barlow

Serin uç çiy. Jenkinlerden komut dosyaları çalıştırırken bu tuzağa düştüm. Ssh ile giriş yaptım ve işe yaradı. Jenkins etkileşimli olmayan bir şekilde giriş yaptı ve başarısız oldu.
Krzysztof Jabłoński

1
Ortak çözüm neden etkileşimli olmayan mermiler için yeni bir yol bile belirlememem. İfadenin, bu nedenle sadece biraz yukarıda olması gerekir. Sadece takma adlar ve etkileşimli araçların başlatılması bu çizginin altına
inmelidir

2
Ubuntu'nun diğer versiyonunda interaktif kontrol şuna benzer:bash # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
Sylvain

Teşekkürler, bu benim için çözdü. Bunu yaklaşık bir saat önce görseydim!
Justin Lawrence

31

Bash invocation'ın nasıl çalıştığı, dotfiles'ın ne yaptığını ve bunları nasıl kullanmanız / yapılandırmanız gerektiği konusunda mükemmel bir kaynak için şunu okuyun:


Anahtar pasajı: "/ etc / profile ve sonra .bash_profile veya .bash_login veya .profile dosyalarından birini okumasına neden olur."
Andy Hayden

29

Ayman'ın çözümü işe yaramazsa, .profileyerine dosyanızı adlandırmayı deneyin .bash_profile. Bu benim için çalıştı.


2
Muhteşem. Bu detayda 15 dakika kaybettim.
2012'de

Bu Ubuntu
12.10'da

1
Ben GUI giriş .profile yükler düşünüyorum. Terminal girişleri için .bash_profile.
Razec Luar

Bu aynı zamanda bir Debian Jessie docker konteynerine SSH girişi için de çalıştı (kalıcı depolama için sadece veri konteyneri kullanarak) - AMA ayrıca giriş kablonuzun / bin / bash ve değil / bin / sh olup olmadığını kontrol etmek için / etc / passwd'yi kontrol etmek isteyebilirsiniz. -------> / bin / dash
Stuart Cardall

1
@RazecLuar .profile, adı geçen kabuğun bir GUI oluşturmaya niyet edip etmediğine bakılmaksızın, herhangi bir giriş kabuğu tarafından yürütülecektir . .profileYorumunuz , soru ve SSHing'de açıkça GUI olmayan bir yöntemle çağrıldığını açıkça belirten bu cevapla tamamen çelişiyor .
underscore_d
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.