Masalah saya adalah, saya harus mengatur variabel env (seperti GIT_EXEC_PATH) di server. Saya membutuhkan variabel itu dengan setiap koneksi (jadi dengan bash dan dengan perintah jarak jauh baik). Saya berhasil mengatur variabel-variabel tersebut dengan bash dengan .bash_profile, tetapi saya memiliki masalah dengan perintah-perintah jarak jauh. Saya menemukan bahwa adalah mungkin untuk menulis perintah di ~ / .ssh / Authorized_key sebelum kunci rsa yang sebenarnya, tetapi saya tidak ingin selalu menulis di sana, saya memerlukan solusi permanen ... Saya menemukan bahwa ~ / .ssh File / rc dieksekusi oleh setiap login ssh, jadi saya meletakkan deklarasi variabel env saya di sana, tetapi tidak berhasil. Variabel diatur dalam file rc, tetapi setelah itu mereka menghilang. : S Mungkin file rc berjalan dalam subkulit: S Apakah ada cara untuk mendefinisikan variabel-variabel tersebut di bash dan dalam perintah-perintah jarak jauh tanpa duplikasi kode?
Edit:
Saya mengedit pertanyaan, karena server adalah host bersama yang di-godaddy, sehingga memiliki konfigurasi unik. File / etc / ssh / sshd_config dan file / etc / ssh / ssh_config kosong. Ada komentar di file-file itu, jika Anda penasaran saya dapat menyalinnya di sini.
- ~ / .Bash_profile bersumber (hanya dengan koneksi bash),
- the ~ / .bashrc tidak pernah bersumber,
- profil ~ /. tidak pernah bersumber,
- lingkungan ~ / .ssh / tidak pernah bersumber,
- ~ / .ssh / rc bersumber (dengan bash dan remote keduanya), tapi saya pikir ini disebut dalam subkulit, karena variabel-variabelnya menghilang.
- The ~ / .ssh / authorized_key bersumber dari setiap waktu, tapi saya harus menulis perintah sebelum setiap kunci rsa (jadi saya tidak ingin mengkonfigurasi dengan itu).
Ringkasan:
Saya dapat mengkonfigurasi bash dengan baik (dengan .bash_profile), tetapi saya tidak dapat mengkonfigurasi panggilan jarak jauh. Itulah masalahnya. Saya mencari file yang bersumber dari perintah bash dan remote.
Sebagai contoh:
Perintah git-upload-pack menemukan file exe, karena variabel env GIT_EXEC_PATH diatur, tetapi dengan remote: "git clone user@domain.com: myrepo local / myrepo" server tidak menemukan perintah itu, karena GIT_EXEC_PATH tidak diatur.
Sunting2:
Menurut ini , dan printenv saya log: ~ / .ssh / rc berjalan di shell normal, bukan di subshell, jadi itu teka-teki mengapa variabel env tidak menempel ...
Saya membuat executable: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
Dan letakkan ini di ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
Dengan bash login & "source logenv" hasilnya adalah:
Tue May 15 04:21:37 MST 2012
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=censored
SSH_TTY=/dev/pts/2
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:21:41 MST 2012
HOSTNAME=censored
TERM=cygwin
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=censored
Dengan remote "ssh myuser@domain.com 'exec ~ / logenv'" hasilnya adalah:
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
PATH=/usr/local/bin:/bin:/usr/bin
MAIL=/var/mail/myuser
PWD=/home/content/65/7962465
HOME=/var/chroot/home/content/65/7962465
Jadi file rc bersumber, tetapi setelah itu variabel disappering ...: S