Belirli bir dizine SSH nasıl?


39

Sık sık bir sunucuya giriş yapıyorum, sonra da belirli bir dizine cd. Bu iki komutu tek bir basitleştirmek mümkün mü?

ssh bob@foo  
cd /home/guest

Sunucu yöneticisi ile temizlemek zorunda kalacağım mümkünse 'foo' ile ilgili herhangi bir şeyi değiştirmekten kaçınmak istiyorum. Ben bash kullanıyorum, fakat diğer mermilerdeki cevaplara açığım.

Yanıtlar:


22

Sadece foo üzerinde ~ bob / .bash_profile dosyanızın son satırı olarak koyun:

cd /home/guest >& /dev/null

Şimdi her oturum açtığınızda (SSH veya başka bir şekilde), cd komutu çalışacaktır. Ssh ile takılmak gerekmez.

"Mümkünse 'foo' üzerindeki herhangi bir şeyi değiştirmekten kaçınmak istediğinizi" yazdığınızı biliyorum, ancak bob @ foo hesabı sizin ise, kendi .bash_profile ayarlarınızı değiştirmek kabul edilebilir mi?


2
Neden evet, bence bu harika çalışacak. Bu değişikliği yapmak için BT'den izin almam gerekmeyecek. Neden> & / dev / null'a ihtiyacınız olduğunu açıklayabilir misiniz?
spuder

6
Olması gerektiğini düşünüyorum &> /dev/null. Sadece cd'nin / home / dizinini değiştiremediği durumlarda gösterilebilecek herhangi bir hata mesajını önler. Bu mesajları görmek istiyorsanız, bunu hariç tutabilirsiniz.
konsolebox

5
>&ve &>Bash içinde aynıdır. İkinci stil olsa tercih edilir.

Ek olarak, / dev / null dizinine yeniden yönlendirme, dizinin adının "cd" nin yapabileceği ekranda yankılanmasını önler.
DanB 11:13

41

Bu OpenSSH ile çalışır:

ssh -t bob@foo 'cd /home/guest && exec bash -l'

Son argüman giriş kabuğunuzda çalışır. -tGeçirilen bayrak sshkuvvetleri sshetkileşimli bir kabuk için gerekli olan bir sözde-terminali, tahsis etmek. -lGeçirilen bayrak bashbaşlar bir şekilde bash giriş kabuğu .


3
Merak ediyorum, bash'a -l seçeneği eklemek de yardımcı olabilir mi? ... && exec bash -l
konsolebox

1
@konsolebox: Bu iyi bir fikir. Bunu cevabıma ekledim.

17

@ EvanTeitelman'ın çözümüne benzer şekilde, bu şekilde de yapabilirsiniz:

$ ssh -t bob@foo "cd /tmp ; bash"

Veya diğer ucundaki kabuğu bilmiyorsanız:

$ ssh -t bob@foo "cd /tmp && exec \$SHELL"

Veya bunun gibi:

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
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.