Jika Anda hanya ingin mengirim PS1
variabel, dan itu tidak mengandung '
(kutipan tunggal), cobalah:
ssh targethost -t "PS1='$PS1'; exec bash"
Penduduk lokal .bashrc
mungkin akan menimpa PS1
(terima kasih kepada Dennis Williamson karena menunjukkan hal ini).
Ada beberapa cara untuk mengirimkan variabel lingkungan melalui ssh , tetapi biasanya dinonaktifkan di konfigurasi server. Jika PermitUserEnvironment
arahan diaktifkan dalam konfigurasi server dan setiap pengguna memiliki pasangan kunci sendiri (ya, Anda mungkin tidak seberuntung itu), Anda dapat menambahkan environment="PS1=…"
ke baris ~/.ssh/authorized_keys
sesuai dengan kunci Anda.
Jika Anda ingin menyimpan konfigurasi Anda sendiri di akun pengguna bersama, Anda dapat membuat direktori file konfigurasi Anda sendiri dan mengatur HOME
variabel lingkungan untuk menunjuk ke direktori itu.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Buat tautan simbolik di mrstatic.home
direktori yang menunjuk ke entri yang sesuai di direktori induk ketika Anda ingin berbagi file dengan pengguna lain.
Lalu, masuk dengan
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Jika Anda ingin memodifikasi remote .profile
(atau file inisialisasi lainnya), Anda mungkin dapat mengotomatiskan pengaturan Anda. Banyak situs mengizinkan LC_*
variabel lingkungan melalui (biasanya mereka digunakan untuk pengaturan lokal). Jika kedua kondisi ini terpenuhi, Anda dapat mengatur variabel yang sebenarnya tidak digunakan untuk lokal, katakanlah LC_USER
, di sisi klien, dan mengujinya di server .profile
.
(Tentu saja akun bersama adalah ide yang buruk, tetapi saya menyadari Anda mungkin tidak berada dalam posisi untuk mengubah situasi itu.)
Gilles 'SANGAT berhenti menjadi jahat'
sumber
"PS1='$PS1' bash -i"
(dan mengapa tidakexec
juga)?PS1
ditimpa selama shell startup. No exec: selama pengujian pada sistem saya sepertinya tidak ada bedanya - tidak ada proses tambahan..bashrc
cenderung menimpaPS1
.Masukkan prompt PS1 Anda di ~ / .ssh / environment dan sesi ssh akan membawanya ke setiap host yang Anda masuki. Ini bekerja untuk saya dengan openssh 4.3p2.
sumber
PermitUserEnvironment
, yang dinonaktifkan secara default.Anda dapat menentukan variabel lingkungan di sisi klien dan jika ssh-server memungkinkannya (periksa man sshd-config), variabel-variabel ini disalin ke sesi ketika Anda masuk ke mesin.
jadi, Anda harus mengkonfigurasi .bashrc di server untuk memeriksa PS1 yang ada (atau variabel apa pun) dan hanya mengatur PS1 jika belum diatur.
atau, yang membuat segalanya lebih sederhana, Anda menggabungkan pengaturan Anda menjadi sebuah fungsi .. dan menyebarkan fungsi itu baik sebagai file khusus sumber Anda sesuai permintaan (
source joes_bashrc
) atau langsung ke .bashrc. memiliki file Anda sendiri tampaknya sedikit lebih kuat. orang lain mungkin menggunakan pengaturan Anda tetapi tidak dipaksa untuk melakukannya.sumber
Jangan bagikan login. SSH seperti dirimu sendiri, lalu lakukan
sudo -su shareduser
(-s
berarti "shell").Jadikan
sudo
direktori home Anda:sumber
Jika Anda ingin melakukannya tanpa memerlukan scp tambahan, Anda dapat melakukan sesuatu seperti ini:
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
Itu akan menghasilkan .bashrc.n yang didasarkan pada server bashrc tetapi dengan penggantian Anda.
sumber
Jika Anda bersedia untuk mengganggu kentara pada rekan-rekan Anda, dan Anda dapat mempercayai mereka untuk tidak mengganggu preferensi Anda, maka saya sarankan kombinasi jawaban Cyrus , jawaban akira ini dan jawaban Dennis Williamson .
~/.bashrc
dan tambahkan pada akhirnya. Meskipun kolega Anda “tidak akan menghargai [Anda] menulis di atas profil dasar”, mereka tidak akan menyadari hal ini kecuali mereka mencarinya.Saya percaya bahwa ini cukup jelas, tetapi:
ssh
perintah menyebabkanUnf
variabel diatur pada server jauh ketika Anda masuk ke dalamnya. Itu akan memanggil kode Anda di remote.bashrc
, yang akan membuat kustomisasi Anda berlaku. Karena Anda meletakkan kode Anda di akhir.bashrc
, itu akan menimpa pengaturan umum sebelumnya dalam file.Pengungkapan: Saya belum menguji ini.
sumber
Cara termudah adalah IMHO:
sumber
PROMPT_COMMAND
(yang dijalankan setiap kali shell mengeluarkan prompt) tampaknya menjadi cara yang sangat berat untuk menyelesaikan masalah ini. Dan, karena ini agak misterius, jawaban apa pun yang menyarankannya harus memiliki penjelasan tentang cara kerjanya.Anda bisa melakukan hal-hal seperti memasang rumah Anda di sshfs / nfs, tetapi solusi termudah adalah dengan scp bashrc Anda menyeberang ke mesin baru. Ini juga membawa alias dan barang.
sumber