~/.profile
ssh somecommand
ইন্টারেক্টিভ এসএস সেশনের বিপরীতে (বা অন্য লগইন পদ্ধতি যেখানে আপনি একটি ইন্টারেক্টিভ সেশন শুরু করেন) এর বিপরীতে আপনি চালানোর সময় সাধারণত পড়া হয় না ।
এস এস এনভায়রনমেন্ট ভেরিয়েবল প্রেরণকে সমর্থন করে। ওপেনএসএইচ-এ, SendEnv
নির্দেশিকাটি ইন ব্যবহার করুন ~/.ssh/config
। তবে নির্দিষ্ট পরিবেশের পরিবর্তনশীল অবশ্যই সার্ভার কনফিগারেশনে একটি AcceptEnv
নির্দেশের সাথে সক্ষম করতে হবে , সুতরাং এটি আপনার পক্ষে কার্যকর নাও হতে পারে।
ওপেনএসএইচ সার্ভারের পাশে পরিবেশ পরিবর্তনশীলগুলি সেট করার অনুমতি দেয়। আবার, এটি অবশ্যই সার্ভার কনফিগারেশনে সক্ষম করতে হবে, PermitUserEnvironment
নির্দেশ সহ। ভেরিয়েবলগুলি ফাইলটিতে সেট করা যায় ~/.ssh/environment
। ধরে নেওয়া যাক আপনি সার্বজনীন কী প্রমাণীকরণ ব্যবহার করেছেন, আপনি প্রতি-কী ভেরিয়েবলগুলি এতে সেট করতে পারেন ~/.ssh/authorized_keys
: environment="FOO=bar"
প্রাসঙ্গিক লাইনের শুরুতে যুক্ত করুন ।
একটা জিনিষ আমি সবসময় মনে করি যে (আশ্চর্যের ব্যাপার যে) কাজ করে দীর্ঘ সর্বজনীন কী প্রমাণীকরণ ব্যবহার করছেন হিসাবে হিসাবে হয় (AB) ব্যবহার command=
বিকল্প মধ্যে authorized_keys
ফাইল। একটি command
বিকল্প সহ একটি কী কেবল নির্দিষ্ট কমান্ড চালানোর জন্যই ভাল; কিন্তু authorized_keys
ফাইলের কমান্ডটি পরিবেশগত ভেরিয়েবলের SSH_ORIGINAL_COMMAND
সাহায্যে ব্যবহারকারী নির্দিষ্ট করা কমান্ডটি সেট করে (ইন্টারেক্টিভ সেশনগুলির জন্য খালি)। সুতরাং আপনি এ জাতীয় কিছু ব্যবহার করতে পারেন ~/.ssh/authorized_keys
(অবশ্যই, আপনি যদি এই কীটি প্রমাণীকরণের জন্য ব্যবহার না করেন তবে এটি প্রযোজ্য নয়):
command="export LD_LIBRARY_PATH=\"$HOME\"/lib;
if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
eval \"$SSH_ORIGINAL_COMMAND\";
else exec \"$SHELL\"; fi" ssh-rsa …
নোট করুন যে আমি সুস্পষ্টতার জন্য লাইন ব্রেকগুলি উপরে রেখেছি, তবে এটি আসলে সমস্ত এক লাইনে থাকা দরকার।
আর একটি সম্ভাবনা হ'ল ~/bin/rsync-wrapper
সার্ভারে একটি র্যাপার স্ক্রিপ্ট লেখা , এরকম কিছু
#!/bin/sh
. ~/.profile
exec rsync "$@"
তারপরে কমান্ড লাইনে পাস --rsync-path='bin/rsync-wrapper'
করুন rsync
। আর্গুমেন্টটি --rsync-path
শেল দ্বারা প্রসারিত হয়, সুতরাং আপনি যদি পছন্দ করেন তবে এমন কিছু পাস করে আপনি rsync কমান্ড লাইনটিকে স্ব-অন্তর্ভুক্ত করতে পারেন --rsync-path='. ~/.profile; rsync'
।
আর একটি অ্যাভিনিউ রয়েছে যা আপনার লগইন শেল বাশ বা zsh হওয়ার উপর নির্ভর করে। বাশ সর্বদা পড়তে থাকে ~/.bashrc
যখন এটি আরএসডি বা এসএসডি দ্বারা চালিত হয়, এটি ইন্টারেক্টিভ না হলেও (তবে এটি হিসাবে পরিচিত না হলে sh
)। Zsh সর্বদা পড়া ~/.zshenv
।
## ~/.bashrc
if [[ $- != *i* ]]; then
# Either .bashrc was sourced explicitly, or this is an rsh/ssh session.
. ~/.profile
fi
## ~/.zshenv
if [[ $(ps -p $PPID -o comm=) = [rs]shd && $- != *l* ]]; then
# Not a login shell, but this is an rsh/ssh session
. ~/.profile
fi