Linux sunucusuna uzak oturum açarken ~ / .profile komutunu atlayın


32

~/.profileUzak bir Linux sunucusuna ssh veya macun kullanarak giriş yaparken uygulanmasını atlamanın veya engellemenin bir yolu var mı ?


Bunu neden yapmak istiyorsun? Neden sadece dosyadaki değerleri düzenlemiyorsunuz? (Sonuçta, sizin profiliniz.)
Telemachus

7
Bu, örneğin birisi .profile dosyasını
bozmuşsa

Yıllardan Aynen durum ben monkey_p buldum
Andrew Hampton

Yanıtlar:


30

Bash için:

$ ssh hostname "bash --noprofile"

6
-tSanırım bu seçeneğe de ihtiyacın olacak .
Grawity

2
ssh -t ana bilgisayar adı "bash - noprofile" .Eğer orada değilse "standart bir tty olmalı" hatası alıyordum.
nitins,

14

Eğer tüm giriş komut dosyalarını devre dışı bırakmak için arıyorsanız, kullanabileceğiniz --noprofiledevre dışı bayrağı /etc/profile, ~/.profilevs. ve --norcdevre dışı etmek ~/.bashrcşöyle:

$ ssh 127.0.0.1 "bash --noprofile --norc"

Varsa, alternatif bir kabuk da başlatabileceğinizi unutmayın. Bunu karıştırdıktan sonra kullanmak zorunda kaldım chsh:

$ ssh 127.0.0.1 sh

Bu büyük olasılıkla sizi boş bir kabuğa düşürecektir (istem yok), bu yüzden lsçalıştığından emin olmak için ona bir veriniz .


4

Hedef makineniz bir bash kabuğundaysa:

user@host:/$ ssh hostname "bash --noprofile"

Alternatif olarak, kullanmak istediğiniz başka bir profil varsa

user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"

1

Ayrıca, hatalı giriş dosyasını silmek için WinSCP gibi bir FTP programı kullanmayı deneyin. Bu atılacak, ancak en azından varsayılan kabukta oturum açabilmelisin.


veya belki de sadece yeniden adlandırın.
jezmck

1

Diğerlerinin de belirttiği gibi, bağlantıyı başlattığınızda bayrakla yapmak --noprofileişe yarayacaktır, ancak farklı bir kabuk kullanıyorsanız bu seçenek olabilir veya olmayabilir.

Bir alternatif, profil komut dosyasının bir SSH bağlantısını kendisi tespit etmesi ve buna göre davranmasıdır. SSH bağlantıları normalde bir dizi çevre değişkeni ayarlayacağından, bu kolayca kontrol edilebilir. Profilinizin başlangıcına aşağıdaki satırlara benzer bir şeyler eklemek yeterli olacaktır:

if [ "$SSH_CONNECTION" != "" ]; then
  echo Logging in with ssh
  return
else
  echo Logging in with something that is not ssh
fi

# rest of your profile goes here

Bu return, komut dosyasının geri kalanını atlar.$SSH_CONNECTION bir SSH bağlantısı başlatılır zaman normalde yaratacağı ortam değişkeni ayarlanır. Aksi takdirde, profil normal şekilde çalışacaktır.

Bunun yalnızca etkilenen profil komut dosyasını atlayacağını unutmayın. Diğer tüm profil komut dosyaları (örneğin /etc/profile:), siz onları benzer şekilde değiştirmediğiniz sürece işlenir.

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.