দুর্ভাগ্যক্রমে পরিবেশের ভেরিয়েবলগুলি সেট করার জন্য কোনও সম্পূর্ণ পোর্টেবল অবস্থান নেই। দুটি ফাইল যা নিকটে আসে সেগুলি ~/.profile
হ'ল এটি theতিহ্যবাহী অবস্থান এবং অনেকগুলি সেটআপগুলিতে বাক্স থেকে বেরিয়ে আসে এবং ~/.pam_environment
একটি আধুনিক, সাধারণ জায়গা কিন্তু সীমিত বিকল্প।
কি .োকাতে হবে ~/.pam_environment
এই ফাইলটি ~/.pam_environment
সমস্ত লগইন পদ্ধতি যা পাম ব্যবহার করে এবং এই ফাইলটি সক্ষম করে তা দ্বারা পঠিত হয় । এটি আজকাল বেশিরভাগ লিনাক্স সিস্টেমকে কভার করে।
এর প্রধান সুবিধাটি ~/.pam_environment
হ'ল (সক্ষম করা থাকলে) এটি ব্যবহারকারীর শেল শুরুর আগেই পড়া হয়, সুতরাং এটি সেশন প্রকার, লগইন শেল এবং অন্যান্য জটিলতা নির্বিশেষে কাজ করে। এটি এমনকি ইন্টারঅ্যাক্টিভ লগইন যেমন su -c somecommand
এবং এর জন্যও কাজ করে ssh somecommand
।
এর প্রধান সীমাবদ্ধতা ~/.pam_environment
হ'ল আপনি কেবল সেখানে সরল অ্যাসাইনমেন্ট রাখতে পারবেন, জটিল শেল সিনট্যাক্স নয়। এই ফাইলটির বাক্য গঠনটি নিম্নরূপ।
- ফাইলগুলি লাইন লাইনে পার্স করা হয়।
- শীর্ষস্থানীয় সাদা স্থান উপেক্ষা করা হয়।
- আপনি allyচ্ছিকভাবে লাইনগুলি
export
এবং একটি একক স্থান (কোনও ট্যাব নয়, চিত্র দেখুন) শুরু করতে পারেন।
- এর পরে, প্রতিটি লাইনে অবশ্যই ফর্ম থাকতে হবে
VAR=VALUE
যেখানে VAR অক্ষর, অঙ্ক এবং আন্ডারস্কোর সমন্বিত থাকে।
#
একটি মন্তব্য শুরু করে, এটি কোনও মান হিসাবে উপস্থিত হতে পারে না।
- যদি VALUE শুরু হয়
'
বা এর সাথে "
অন্যরকম অনুরূপ উদ্ধৃতি থাকে, তবে ভিএআরটি উদ্ধৃতিগুলির মধ্যে স্ট্রিংয়ে সেট করা হবে (দ্বিতীয় উদ্ধৃতিটির পরে সমস্ত কিছু উপেক্ষা করা হবে)। অন্যথায় =
চিহ্নটি পরে VAR স্ট্রিংয়ে সেট করা আছে ।
- যদি না থাকে
=
, পরিবেশ থেকে ভেরিয়েবল সরিয়ে ফেলা হয়।
উল্টো দিকে, ~/.pam_environment
পরিস্থিতিতে একটি বৃহত অ্যারে কাজ করে। ডাউনসাইডে, আপনার কোনও গতিশীল সেটিংস থাকতে পারে না যেমন অন্য ভেরিয়েবলের উপর একটি ভেরিয়েবলের মান ভিত্তি করে (উদাহরণস্বরূপ PATH- তে ডিরেক্টরি যুক্ত করা) বা কমান্ডের আউটপুট ব্যবহার করা যায় (উদাহরণস্বরূপ ডিরেক্টরি যদি ডিরেক্টরি বা প্রোগ্রাম উপস্থিত থাকে তবে পরীক্ষা করা) এবং কিছু অক্ষর ( #'"
, নিউলাইন) অসম্ভব বা ঝামেলা হয় মান রাখা।
কি .োকাতে হবে ~/.profile
এই ফাইলে পোর্টেবল (POSIX) sh সিনট্যাক্স থাকা উচিত। [[ … ]]
আপনি যদি জানেন যে আপনার সিস্টেমে এই শেলগুলি রয়েছে তবে কেবলমাত্র ksh বা বাশ এক্সটেনশন (অ্যারে ইত্যাদি) ব্যবহার করুন /bin/sh
।
এই ফাইলটি স্বয়ংক্রিয় অ্যাপ্লিকেশনগুলিতে স্ক্রিপ্টগুলি দ্বারা পঠিত হতে পারে, সুতরাং এটি কোনও প্রোগ্রাম বা কল দেয় না যা কোনও আউটপুট বা কল উত্পাদন করে exec
। আপনি যদি পাঠ্য-মোড লগইনগুলিতে এটি করতে চান তবে এটি কেবল ইন্টারেক্টিভ শেলের জন্য করুন। উদাহরণ:
case $- in *i*)
# Display a message if I have new mail
if mail -e; then echo 'You have new mail'; fi
# If zsh is available, and this looks like a text-mode login, run zsh
case "`ps $PPID` " in
*" login "*)
if type zsh >/dev/null 2>/dev/null; then exec zsh; fi;;
esac
esac
এটি /bin/sh
আপনার লগইন শেল হিসাবে ব্যবহার এবং আপনার প্রিয় শেলটিতে স্যুইচ করার উদাহরণ an আরও দেখুন আমি যখন আমার sysadmin আমাকে পরিবর্তন করা যাক করতে রাজি আমার লগ-ইন শেল হিসাবে ব্যাশ ব্যবহার করতে পারেন
~/.profile
অ-গ্রাফিকাল লগইনে কখন পড়া হয় না?
বিভিন্ন লগইন শেল বিভিন্ন ফাইল পড়ে।
যদি আপনার লগইন শেল বাশ হয়
বাশ পড়েন ~/.bash_login
বা ~/.bash_profile
তাদের পরিবর্তে উপস্থিত থাকলে ~/.profile
। এছাড়াও ব্যাশটি ~/.bashrc
ইন্টারেক্টিভ হলেও লগইন শেলটিতে পড়ে না। এই quirks আবার মনে রাখতে হবে না, ~/.bash_profile
নিম্নলিখিত দুটি লাইন দিয়ে একটি তৈরি করুন :
. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
এছাড়াও দেখুন ব্যাশ সহ পরিবেশের ভেরিয়েবল সেটআপ করার জন্য কোন সেটআপ ফাইলগুলি ব্যবহার করা উচিত?
যদি আপনার লগইন শেল zsh হয়
Zsh পড়া ~/.zprofile
এবং ~/.zlogin
না, কিন্তু ~/.profile
। Zsh এর sh থেকে আলাদা সিনট্যাক্স রয়েছে তবে ~/.profile
sh এমুলেশন মোডে পড়তে পারেন । আপনি এটি আপনার জন্য ব্যবহার করতে পারেন ~/.zprofile
:
emulate sh -c '. ~/.profile'
এছাড়াও দেখুন জেডএস ~ /। প্রোফাইলগুলিতে আঘাত করছে না
যদি আপনার লগইন শেলটি অন্য কোনও শেল হয়
/bin/sh
আপনার লগইন শেল এবং আপনার পছন্দের শেল (যেমন মাছ) কেবলমাত্র একটি ইন্টারেক্টিভ শেল হিসাবে ব্যবহারের অভাব সেখানে আপনি তেমন কিছু করতে পারবেন না । আমি zsh সঙ্গে কি কি। থেকে অন্য শেলটি চাওয়ার উদাহরণের জন্য উপরে দেখুন ~/.profile
।
রিমোট কমান্ড
ইন্টারেক্টিভ শেলটি ছাড়াই কোনও রিমোট কমান্ডের আবেদন করার সময়, সমস্ত শেল একটি স্টার্টআপ ফাইলটি পড়ে না।
Ksh ENV
ভেরিয়েবল দ্বারা নির্দিষ্ট ফাইলটি পড়ে , যদি আপনি এটি পাস করার ব্যবস্থা করেন manage
বাশ পড়েন ~/.bashrc
যদি এটি ইন্টারেক্টিভ না হয় (!) এবং এর মূল প্রক্রিয়াটি বলা হয় rshd
বা sshd
। সুতরাং আপনি আপনার ~/.bashrc
দিয়ে শুরু করতে পারেন
if [[ $- != *i* ]]; then
. ~/.profile
return
fi
~/.zshenv
শুরু হওয়ার সাথে সাথে Zsh সর্বদা পড়ে । সাবধানতার সাথে ব্যবহার করুন, যেহেতু এটি zsh এর প্রতিটি একক উদাহরণ দ্বারা পঠিত হয়, এমনকি এটি যখন আপনি অন্য ভেরিয়েবলগুলি সেট করে থাকেন সেখানেও এটি একটি সাবশেল is Zsh যদি আপনার লগইন শেল হয় এবং আপনি কেবল এটি দূরবর্তী কমান্ডগুলির জন্য ভেরিয়েবল সেট করতে ব্যবহার করতে চান, একজন প্রহরী ব্যবহার করুন: কিছু ভেরিয়েবল সেট করুন ~/.profile
, যেমন MY_ENVIRONMENT_HAS_BEEN_SET=yes
পড়ার আগে এই গার্ডটি পরীক্ষা করুন ~/.profile
।
if [[ -z $MY_ENVIRONMENT_HAS_BEEN_SET ]]; then emulate sh -c '~/.profile'; fi
গ্রাফিকাল লগইনের ক্ষেত্রে
অনেকগুলি ডিস্ট্রিবিউশন, ডিসপ্লে ম্যানেজার এবং ডেস্কটপ এনভায়রনমেন্টগুলি ~/.profile
স্টার্টআপ স্ক্রিপ্টগুলি থেকে স্পষ্টভাবে সোর্স করে বা লগইন শেল চালিয়ে চালানোর ব্যবস্থা করে।
দুর্ভাগ্যক্রমে, ডিস্ট্রো / ডিএম / ডিই সংমিশ্রণগুলি হ্যান্ডল করার কোনও সাধারণ পদ্ধতি নেই যেখানে ~/.profile
পড়া হয় না।
আপনি যদি শুরু করে একটি traditionalতিহ্যবাহী অধিবেশন ব্যবহার করেন তবে ~/.xsession
এটি সেই জায়গা যেখানে আপনার পরিবেশের পরিবর্তনশীলগুলি সেট করা উচিত; এটি সোর্সিং দ্বারা ~/.profile
(অর্থাত্ . ~/.profile
) করুন। মনে রাখবেন যে কয়েকটি সেটআপে, ডেস্কটপ এনভায়রনমেন্ট স্টার্টআপ স্ক্রিপ্টগুলি ~/.profile
আবার উত্স করবে ।