Saya mulai mengajukan pertanyaan ini tetapi menjawabnya sementara saya membukanya. Saya akan memposting pertanyaan ini, menindaklanjutinya dengan solusi saya dan membiarkannya terbuka untuk solusi potensial lainnya.
<
cerita belakang>
Saya pengguna tmux dan vim. Saya suka kerja remote vim karena saya tidak perlu khawatir tentang mesin pengembangan Ubuntu yang hilang ketika film flash memberi saya panik kernel. Menjalankan tmux berarti file yang terbuka menunggu saya setelah saya reboot dan saya dapat melanjutkan dari tempat saya tinggalkan. Saya punya masalah dengan vim yang berjalan di sesi tmux ketika saya terhubung seperti:
ssh example.com -t 'tmux attach'
Masalah UTF-8 muncul yang tidak terpotong saat melakukan shelling secara normal dan hanya menempel pada sesi tmux secara manual.
<
/ backstory>
Jadi saya ingin metode yang dapat digunakan kembali memulai sesuatu pada ssh login, yang tidak mempengaruhi hal-hal lain yang telah saya konfigurasikan di .zshrc
(atau Anda .bashrc
jika Anda masih menggunakan bash) yang mungkin diperlukan untuk lingkungan pengembangan saya, yang tidak muncul ketika saya sesekali bekerja secara lokal pada mesin yang sangat dikatakan.
sumber
ssh example.com -t 'tmux attach'
bukan karena masalah memuat lingkungan saya tetapi karena saya punya masalah dengan tampilan karakter UTF-8; masalah ini tidak ada saat menghubungkan dengan cara konvensional. Inilah mengapa pertanyaan ini adalah tentang menjalankan skrip segera setelah terhubung melalui SSH..profile
? Saya berasumsi bahwa masalahnya adalah karena salah penempatan lokal pada mesin target, yang Anda atasi/etc/profile
atau.profile
perbaiki. Masalah lokal mungkin dapat diperbaiki dengan informasi lebih lanjut.Saya sebelumnya menyarankan pengaturan
PermitUserEnvironment yes
dan menambahkan variabel lingkungan di Anda~/.ssh/environment
sampai Eli Heady menyumbang dengan saran yang lebih baik di komentar di bawah.Buka
.zlogin
(bash:.bash_profile
dll.) Anda dan masukkan yang berikut ini:Inspirasi diambil dari: Bagaimana cara meminta input dalam skrip shell Linux?
Perhatikan bahwa saya telah menggunakan
.zlogin
file tersebut tetapi Anda dapat menggunakan.zshrc
file Anda tetapi saya ingin menjaga dotfile saya tetap rapi dan memisahkannya sehingga saya dapat menggunakannya pada komputer lain.Ganti pertanyaan dengan sesuatu yang sesuai untuk diri Anda dan gantikan
MY_SSH_CONNECTION="yes" tmux attach
dengan apa pun yang ingin Anda jalankan pada saat itu.Perhatikan bagaimana skrip mengatur
MY_SSH_CONNECTION="yes"
sebelumtmux attach
meneruskannya ke tmux karena skrip juga akan membuka shell yang akan mengakses skrip yang sama di atas dan akan mencegah rekursi.sumber
if [[ "$SSH_CONNECTION" != "" ]]
harus melakukannya.Saya sendiri, saya menambahkan ini ke file .bash_profile saya:
Ini memberi saya waktu untuk membatalkan pemasangan kembali atau membuat sesi layar. Ini tidak akan berfungsi pada format 'ssh system command' (yang tidak memanggil profil ~ /.*). Fungsi shell diatur untuk memasang kembali jika saya batal.
sumber
Anda mungkin mempertimbangkan untuk berlari
dan jalankan sesi terminal Anda di sana. Anda kemudian dapat melepaskan (
^A^D
) dan memasang kembali nanti (dari klien yang berbeda juga). Ini akan membuat masalah dengan inisialisasi non-interaktif hilang karena layar menjaga sesi terminal interaktif penuh (opsional cangkang masuk juga,man screen
(1) atau^A?
)sumber
-t 'tmux attach'
saya memiliki masalah dengan vim yang tidak hadir secara normal. Inilah sebabnya mengapa pertanyaan sebenarnya adalah tentang menjalankan skrip pada ssh connect daripada manajemen layar / sesi. Permintaan maaf karena tidak jelas dalam pertanyaan sayaUntuk berbicara dengan masalah UTF-8 secara khusus, jika Anda menambahkan
Dan
$LANG
diatur ke sesuatu sepertien_US.UTF-8
di ujung lokal dan sshd Anda di ujung remote memungkinkanSendEnv
direktif (denganAcceptEnv
disshd_config
), tmux di ujung yang lain harus menghormatinya. Saya memiliki masalah ini untuk sementara waktu dan sulit untuk memecahkan masalah.sumber
Jika Anda ingin menjalankannya setiap kali terhubung, Anda bisa menambahkan
tmux attach
ke bagian bawah komputer Anda~/.profile
pada mesin jarak jauh.sumber