Parameter SSH untuk mengabaikan skrip .bashrc

8

Saya memiliki server yang ketika mulai, sebuah baris di .bashrcmengeksekusi perintah berikut /bin/watch ~/checker.bashyang seperti yang diharapkan menonton perintah itu pada saat server mulai.

Saya juga punya klien yang masuk ke mesin itu, tapi saya tidak ingin sesi klien untuk mengeksekusi perintah yang sama dari .bashrc.

Saya telah melihat AcceptEnvuntuk melewati env vars, meskipun memerlukan konfigurasi server, yang ingin saya hindari.

Saya juga tidak ingin memiliki 2 akun pengguna yang berbeda untuk akun yang berbeda .bashrc.

Apakah ada sudut lain untuk mendekati ini?

ljs.dev
sumber
mengapa Anda tidak menginginkan dua akun yang berbeda? semua "klien" (yang tampaknya merupakan pihak ketiga yang tidak terkait) harus diisolasi (juga dari Anda sendiri)
umläute

Jawaban:

5

Anda dapat mengaktifkan bagian-bagian Anda .bashrchanya jika tidak dipanggil melalui ssh.

misalnya sesuatu seperti:

# within an SSH-session, ${SSH_TTY} will be set
if [ "x${SSH_TTY}" = "x" ]; then
  /bin/watch ~/checker.bash
fi
umläute
sumber
bekerja seperti pesona dan semua jawaban di sini mengajari saya banyak. Sangat dihargai!
ljs.dev
13

Dua arah:

Jangan gunakan bash untuk sesi ini, coba tanda hubung (atau / bin / sh):

ssh 127.0.0.1 /bin/dash

Gunakan bash dengan opsi perintah untuk menonaktifkan pemrosesan file startup:

ssh 127.0.0.1 "bash --noprofile --norc"
Dan Garthwaite
sumber
Sudahkah Anda mencoba cara Anda? (esp. # 2)?
umläute
1
Metode 2 hanya hang untuk saya.
slm
5
Metode kedua sangat cocok untuk saya. Anda tidak melihat prompt karena PS1 tidak disetel, yang merupakan efek samping dari melakukan seperti yang diminta.
Dan Garthwaite
keduanya hanya bertahan untuk saya
Aditya Mittal
@AdityaMittal Keduanya akan hang jika Anda melakukan sesi interaktif karena tidak ada prompt PS1. Coba ketikkan 'ls /'
Dan Garthwaite
2

Anda dapat mengganti baris / bin / arloji .... dengan

 if ps ax | grep /bin/watch | grep -v grep  > /dev/null 2>&1
 then
    echo "Nothing to do"
 else
    /bin/watch ~/checker.bash
 fi

atau semacamnya.

MariusMatutiae
sumber
OK bagus. Dalam hal ini, saya mungkin memiliki beberapa shell yang menjalankan watchperintah, tapi saya suka solusinya.
ljs.dev