Khi tôi muốn bắt đầu (hoặc khởi động lại) ssh-agent, nó sẽ cho tôi một vài lệnh mà tôi nên chạy bằng cách thực hiện eval $(ssh-agent). Tất nhiên điều này không thành công cho cá, vì nó đưa ra cú pháp cho bash hoặc csh.
Các lệnh trông như:
SSH_AUTH_SOCK=/var/folders/v4/c116f_790t7g58lh3jbr7_vm0000gq/T//ssh-L95xhmGl9FZo/agent.36846; export SSH_AUTH_SOCK;
SSH_AGENT_PID=36847; export SSH_AGENT_PID;
echo Agent pid 36847;
hoặc cho csh:
setenv SSH_AUTH_SOCK /var/folders/v4/c116f_790t7g58lh3jbr7_vm0000gq/T//ssh-Tf8etHZfP9k3/agent.36873;
setenv SSH_AGENT_PID 36874;
echo Agent pid 36874;
Phiên bản csh chạy mà không có khiếu nại khi tôi làm eval (ssh-agent -c), và sau đó echo $SSH_AGENT_PID $SSH_AUTH_SOCKđưa ra đầu ra dự kiến. Tuy nhiên, shell mới không giữ các biến đó. Không gì setenvlàm gì? rõ ràng đó setlà biến số bằng cách nào đó, nhưng nó không có trong tài liệu. Nếu tôi bắt đầu một thiết bị đầu cuối mới, các biến bị mất, vì vậy tôi không chắc chúng được xuất?
Tôi chỉ thấy đó setenvlà một hàm cá, với định nghĩa set -gx, vì vậy tôi cho rằng nó đặt biến là một globalbiến và xuất nó. Tôi không hiểu rõ về phạm vi biến, vậy điều có thích hợp cho các ssh-agentbiến không?
Đối với ngữ cảnh, tôi đang làm điều này dựa trên các hướng dẫn tại github . Tôi đã sử dụng một chìa khóa ssh cho github trong nhiều năm và chưa bao giờ làm việc ssh-agenthoặc ssh-addchuyện, nhưng tôi nhận thấy nó trong khi thiết lập trên một máy tính mới. Có vẻ như os x đang tự chạy ssh-agent (hoặc một cái gì đó khác mà tôi đã thiết lập từ lâu), bởi vì $SSH_AUTH_SOCKđã tồn tại . Vì vậy, có thể chạy này không quan trọng? ssh-addkhông chạy mà không phàn nàn ngay cả khi không chạy ssh-agent.
functions setenv, hãy xem bản chỉnh sửa của mình. typelà tốt, mặc dù. Nó dường như là một sự kết hợp của whichvà functions.
type setenv