Vấn đề của tôi là, tôi phải đặt các biến env (như GIT_EXEC_PATH) trên máy chủ. Tôi cần các biến đó theo mọi kết nối (do bash và các lệnh từ xa). Tôi đã quản lý để đặt các biến đó bằng cách bash với .bash_profile, nhưng tôi gặp vấn đề với các lệnh từ xa. Tôi thấy rằng có thể viết lệnh trong ~ / .ssh / ủy quyền trước khóa rsa thực tế, nhưng tôi không muốn viết ở đó luôn, tôi cần một giải pháp lâu dài ... Tôi thấy rằng ~ / .ssh / tệp RC được thực thi bởi mỗi lần đăng nhập ssh, vì vậy tôi đặt ở đó các khai báo biến env của mình, nhưng nó không hoạt động. Các biến được đặt trong tệp RC, nhưng sau đó chúng biến mất. : S Có thể tệp RC chạy trong một khung con: S Có cách nào để xác định các biến đó trong bash và trong các lệnh từ xa mà không cần sao chép mã không?
Biên tập:
Tôi đã chỉnh sửa câu hỏi, bởi vì máy chủ là một máy chủ chia sẻ thần thánh, vì vậy nó có một cấu hình duy nhất. Các tập tin / etc / ssh / sshd_config và / etc / ssh / ssh_config đều trống. Có những bình luận trong những tập tin đó, nếu bạn tò mò tôi có thể sao chép nó ở đây.
- ~ / .Bash_profile có nguồn gốc (chỉ bằng các kết nối bash),
- ~ / .bashrc không bao giờ có nguồn gốc,
- ~ / .profile không bao giờ có nguồn gốc,
- ~ / .ssh / môi trường không bao giờ có nguồn gốc,
- ~ / .ssh / rc có nguồn gốc (bởi bash và remote cả hai), nhưng tôi nghĩ nó được gọi trong subshell, bởi vì các biến biến mất.
- Mọi lúc ~ / .ssh / ủy quyền đều có nguồn gốc, nhưng tôi phải viết các lệnh trước mỗi khóa rsa (vì vậy tôi sẽ không định cấu hình với điều đó).
Tóm lược:
Tôi có thể định cấu hình bash tốt (với .bash_profile), nhưng tôi không thể định cấu hình các cuộc gọi từ xa. Đó chính là vấn đề. Tôi đang tìm kiếm một tập tin có nguồn gốc từ cả hai lệnh bash và remote.
Ví dụ:
Lệnh git-upload-pack tìm thấy tệp exe, bởi vì biến env GIT_EXEC_PATH được đặt, nhưng với điều khiển từ xa: "git clone user@domain.com: myrepo local / myrepo" máy chủ không tìm thấy lệnh đó, vì GIT_EXEC_PATH không được đặt.
Chỉnh sửa2:
Theo đó , và bản ghi printenv của tôi: ~ / .ssh / rc đang chạy trong vỏ bình thường, không phải trong subshell, vì vậy đó là một câu đố tại sao các biến env không dính ...
Tôi đã tạo một tệp thực thi: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
Và đặt cái này vào ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
Bằng cách đăng nhập bash & "nguồn logenv" , kết quả là:
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
Bằng cách từ xa "ssh myuser@domain.com 'exec ~ / logenv'" kết quả là:
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
Vì vậy, tập tin RC có nguồn gốc, nhưng sau đó các biến không đồng ý ...: S