এটি কোনও সাধারণ পদ্ধতি যা আপনি কোনও শেলের জন্য ব্যবহার করতে পারেন। যে কোনও ক্ষেত্রে, আপনাকে জানতে হবে ব্যবহারকারী সাধারণত কোন শেলটি দিয়ে লগ ইন করে:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
তারপরে আপনাকে সনাক্ত করতে হবে যে এই শেলটি সাধারণত কোন ডট-ফাইলগুলি পড়বে:
man $shell
একটি শর্টকাট যা কাজ করতে পারে তা হ'ল শেল নাম ধারণ করে এমন ডট-ফাইলের তালিকা:
ls ~/.*${shell}*
লগইন চলাকালীন যদি ফাইলগুলির মধ্যে কোনও একটি আসলে পড়ে আছে কিনা তা আপনি যদি পরীক্ষা করতে চান তবে আপনি কেবলমাত্র প্রতিটিটির মধ্যে ফাইলের নাম মুদ্রণ করতে পারেন, উদাহরণস্বরূপ:
echo .bashrc
লগ ইন করার সময়, আপনার তখন কোন ফাইলগুলি পড়া হচ্ছে তা দেখতে হবে এবং কোনটি সংশোধন করতে হবে তা আপনি ঠিক করতে পারেন। সাবধান হন যে আপনার ব্যবহার echo "$0"
বা অনুরূপ করার চেষ্টা করা উচিত নয় , কারণ $0
শেল কীভাবে ডট-ফাইলগুলি প্রসেস করে এবং বিভ্রান্তিকর হতে পারে তার উপর নির্ভর করে।
যখন ভেরিয়েবলটি "স্থায়ীভাবে" ঘোষণার কথা আসে তখন লক্ষ্য করুন যে এটি কেবল অধিবেশন পর্যন্ত প্রসারিত। একটি অধিবেশন ছাড়া কোনও ভেরিয়েবলের মান অ্যাক্সেস করার কোনও উপায় নেই, সুতরাং এটির বাইরে এর কোনও অর্থ নেই। যদি আপনার অর্থ "কেবল পঠনযোগ্য" হয় তবে এটি শেল নির্ভর, এবং বাশে আপনি ব্যবহার করতে পারেন:
declare -r VAR
যদি এর ইতিমধ্যে একটি মান থাকে, বা
declare -r VAR=value
একই সময়ে এটি বরাদ্দ করা। সমস্ত শেলের এই বৈশিষ্ট্যটি নেই।
বেশিরভাগ শেলগুলিতে ভেরিয়েবল ঘোষণার জন্য আপনার একটি ভেরিয়েবলের নাম ( [A-Za-z_][A-Za-z0-9_]*
) ব্যবহার করা উচিত , তার পরে একটি সমান চিহ্ন (এবং সমান চিহ্নের আশেপাশে কোনও ফাঁকা স্থান নয় ), তার পরে একটি মান (মানটি সহজ না হওয়া অবধি উদ্ধৃত [A-Za-z0-9_]+
)। উদাহরণ স্বরূপ:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1