/Etc/profile.d এর স্ক্রিপ্টগুলি কী করে?


85

আমি লিনাক্স কমান্ড লাইন এবং শেল স্ক্রিপ্টিং বাইবেল থেকে বেসিক শেল স্ক্রিপ্টিং সম্পর্কে পড়ছি ।

এটি বলে যে /etc/profileফাইলটি শ্যাশ শুরুর প্রারম্ভে পরিবেশের পরিবর্তনশীলগুলি সেট করে। /etc/profile.dডিরেক্টরি অন্যান্য স্ক্রিপ্ট অ্যাপ্লিকেশন-নির্দিষ্ট প্রারম্ভকালে ফাইল, যা শেল দ্বারা প্রারম্ভকালে সময়ে মৃত্যুদন্ড কার্যকর করা হয় ধারণ ধারণ করে।

  • এই ফাইলগুলি /etc/profileবাশ প্রারম্ভের জন্যও সমালোচিত হলে কেন এটির একটি অংশ নয় ?

  • এই ফাইলগুলি যদি অ্যাপ্লিকেশন-ভিত্তিক স্টার্টআপ ফাইলগুলি বাশ প্রারম্ভের জন্য গুরুত্বপূর্ণ না হয় তবে তারা কেন স্টার্টআপ প্রক্রিয়ার অংশ? সেগুলি কেবল তখনই চালানো হয় না যখন নির্দিষ্ট অ্যাপ্লিকেশনগুলি যার জন্য সেটিংগুলি থাকে, তা কার্যকর করা হয়?

উত্তর:


71

বাশ প্রারম্ভের জন্যও যদি এই ফাইলগুলি সমালোচনা হয় তবে কেন এই ফাইলগুলি / ইত্যাদি / প্রোফাইলের অংশ নয়?

যদি আপনার অর্থ হয়, "কেন সেগুলি কেবল একটি বিশাল স্ক্রিপ্টের সাথে সংযুক্ত করা হয় না?", উত্তরটি হ'ল:

  1. কারণ এটি স্ক্রিপ্টগুলির জন্য দায়বদ্ধ লোকদের জন্য একটি রক্ষণাবেক্ষণ দুঃস্বপ্ন হতে পারে।
  2. কারণ স্ক্রিপ্টগুলি স্বতন্ত্র মডিউল হিসাবে লোড করা পুরো সিস্টেমটিকে আরও গতিশীলভাবে সামঞ্জস্য করে তোলে - স্বতন্ত্র স্ক্রিপ্টগুলি অন্যকে প্রভাবিত না করে যুক্ত এবং মুছে ফেলা যায়। প্রভৃতি
  3. কারণ এগুলি / ইত্যাদি / প্রোফাইলের মাধ্যমে লোড করা হয়েছে যা তাদেরকে একইভাবে বাশ "প্রোফাইল" এর একটি অংশ করে তোলে।

এই ফাইলগুলি যদি অ্যাপ্লিকেশন-ভিত্তিক স্টার্টআপ ফাইলগুলি বাশ প্রারম্ভের জন্য গুরুত্বপূর্ণ না হয় তবে তারা কেন স্টার্টআপ প্রক্রিয়ার অংশ? সেগুলি কেবল তখনই চালানো হয় না যখন নির্দিষ্ট অ্যাপ্লিকেশনগুলি যার জন্য সেটিংগুলি থাকে, তা কার্যকর করা হয়?

এটি আমার কাছে বিস্তৃত নকশার দর্শনের প্রশ্নের মতো মনে হয় যা আমি দুটি ভাগে ভাগ করব। প্রথম প্রশ্নটি শেল পরিবেশ ব্যবহারের মান এবং যথাযথতা সম্পর্কে। এটির কি ইতিবাচক মূল্য আছে? হ্যাঁ, এটি দরকারী। এটি কি সমস্ত কনফিগারেশন সমস্যার সর্বোত্তম সমাধান? না, তবে এটি সাধারণ পরামিতিগুলি পরিচালনা করার জন্য খুব দক্ষ এবং এটি ব্যাপকভাবে স্বীকৃত এবং বোধগম্য। এর বিপরীতে বলা যায় যে, এই জাতীয় বিষয়গুলি বৈকল্পিকভাবে কনফিগার করার সিদ্ধান্ত নেওয়ার পরে, সম্ভবত AT পথ পৃথক স্বাধীন সরঞ্জাম দ্বারা পরিচালিত হতে পারে, পছন্দসই সরঞ্জামগুলি যেমন $ এডিটোর কোথাও স্ক্লাইট ফাইলে থাকতে পারে, C এলসি ল্যাং স্টাফ একটি পাঠ্য ফাইলে থাকতে পারে অন্য কোথাও কাস্টম বিন্যাস, ইত্যাদি - কেবল এনভ ভেরিয়েবল এবং ব্যবহার করে না/etc/profile.dহঠাৎ সহজ মনে হচ্ছে? আপনি সম্ভবত ইতিমধ্যে জানেন যে একটি এনভির ভেরিয়েবল কী, তারা কীভাবে কাজ করে এবং কীভাবে সেগুলি ব্যবহার করে, বনাম, উপযুক্তভাবে "পরিবেশ" নামকরণ করা হয়েছে তার 5 টি সর্বব্যাপী দিকগুলির জন্য 5 সম্পূর্ণ ভিন্ন পদ্ধতি শিখতে ।

দ্বিতীয় প্রশ্নটি হ'ল, "স্টার্টআপ কি এর জন্য উপযুক্ত সময়?", যা আপত্তি জানায় যে এটি খুব দক্ষ নয় (সমস্ত ডেটা যা ব্যবহার করতে পারে বা নাও পারে ইত্যাদি ইত্যাদি)। কিন্তু:

  • বাস্তবে, এটি এত বেশি ডেটা নয়, আংশিক কারণ তাদের সঠিক মনের কেউই এটি কয়েকটি সাধারণ প্যারামিটারের বেশি ব্যবহার করতে পারবেন না (যেহেতু কোনও অ্যাপ্লিকেশন কনফিগার করার অন্যান্য উপায় রয়েছে)।
  • যদি সাধারণভাবে অনুরোধ করা হয় সেগুলি সম্পর্কিত ক্ষেত্রে যদি এটি বুদ্ধিমানের সাথে ব্যবহৃত হয়, তবে উদাহরণস্বরূপ, ডিফল্ট $ সিএফএলএগএস প্রতিবার যখনই আপনি প্রার্থনা gccকরবেন তখন কোনও ফাইল থেকে সিএফএলএগএস কম দক্ষ হবে। মনে রাখবেন যে জড়িত মেমরির পরিমাণটি আবার অসীম।
  • এটি সিস্টেমিক জিনিসগুলিকে জড়িত করতে পারে যা একাধিক অ্যাপ্লিকেশন এর সাথে জড়িত থাকতে পারে এবং শেলটি একটি সাধারণ ভিত্তি

এই তালিকায় আরও যোগ করা যেতে পারে তবে আশা করা যায় এটি আপনাকে সমস্যার পক্ষে ও মতামত সম্পর্কে কিছু ধারণা দেয় - প্রধান 'প্রো' এবং প্রধান 'কন' হচ্ছে এটি একটি বিশ্বব্যাপী নেমস্পেস।


Does it have positive ... and understood.আপনি এখানে কি বলতে চাইছেন? আমি অনুচ্ছেদ ব্যতীত অন্য সমস্ত কিছু বুঝতে পেরেছি।
asheeshr

3
শেল পরিবেশ সাধারণত শেল নিজেই এবং অন্যান্য সর্বব্যাপী সরঞ্জামগুলি কনফিগার করার জন্য ব্যবহৃত হয়। কনফিগারেশনটি কেবল এটিই করা যায় নি , তাই অন্যান্য বিকল্পগুলির চেয়ে পরিবেশটি ভাল বা খারাপ কিনা তা বিবেচনা করা উচিত। "ইতিবাচক মান" থাকার অর্থ, আমি বোঝাতে চাইছি যে পরিবেশটি ব্যবহার করা অন্য বিকল্পগুলির চেয়ে কিছুটা সুবিধা বলে মনে হচ্ছে কমপক্ষে ডাব্লুআরটি "সহজ পরামিতি পরিচালনা" - যথা এটি অত্যন্ত দক্ষ এবং "ব্যাপকভাবে স্বীকৃত এবং বোঝা" ... এবং আমি এই বাক্যাংশটি আরও ব্যাখ্যা করতে কিছুটা যুক্ত করব।
গোল্ডিলোক

প্রোফাইল.লোকালে লাইন সংযোজন সম্পর্কে কী? এটি কি গ্রহণযোগ্য বনাম। প্রোফাইল.ডি ফোল্ডারে স্ক্রিপ্ট তৈরি করছে?
অবিন্দ্র গলচরণ

অ্যাভিন্দ্রগোলচরণ @ বিভিন্ন ডিস্ট্রো এই জাতীয় জিনিসগুলির জন্য বিভিন্ন স্কিম ব্যবহার করতে পারে। profile.dডিরেক্টরি ভালো লাগে কারণ বিষয়বস্তু sourced হয় দ্বারা /etc/profileএই ধরনের একটি প্রারম্ভকালে ফাইল (মধ্যে আবাহন দেখতে যেমন ব্যাশ যেমন, যা শেল দ্বারা নির্দিষ্ট করা হয় man bash); আপনি যদি সম্পাদনা করেন /etc/profile, আপনি অক্ষম করতে পারেন /etc/profile.d/etc/profile.localমনে হয় এটি একটি SUSE আবিষ্কার, সম্ভবত কোথাও থেকে উত্সাহিত /etc/profileযাতে আপনি নিজের জিনিস সেখানে রাখতে পারেন। তবে, আপনি যদি এটি একটি SUSE সিস্টেমে সরিয়ে নিয়ে যান এবং অন্য কোনও সমন্বয় না করেন তবে এটি কোনও কিছুর দ্বারা ব্যবহৃত হবে না।
গোল্ডিলোকস

বুঝেছি, এটা স্ফটিক পরিষ্কার। হ্যাঁ আমরা আমার চাকরিতে সুস ব্যবহার করি। জন্য / etc / প্রোফাইল। অনেক ভাল বাজি মনে হচ্ছে।
অববীন্দ্র গলচরণ

13

এই ফাইলগুলি একটি অ্যাপ্লিকেশনের সাথে সুনির্দিষ্ট, তবে অ্যাপ্লিকেশন শুরু হওয়ার পরে নয়, শেল প্রারম্ভকালে উত্সাহিত হয়। একটি কনফিগারেশন ডিরেক্টরি এখানে একই কারণে ব্যবহৃত হয় যে এটি অন্যান্য অনেক জায়গায় পাওয়া যায়। এটি কোনও অ্যাপ্লিকেশন বা সফ্টওয়্যার প্যাকেজটিকে কনফিগারেশনগুলি পরিবর্তন করতে দেয়। এটি কোনও বিভাজনযুক্ত কনফিগারেশন ব্যতীত সম্ভব হবে না, কারণ একক কনফিগারেশন ফাইল পরিচালনা / আপডেট করার চেষ্টা করা একাধিক প্যাকেজগুলি যা ব্যবহারকারী দ্বারা সংশোধিত হতে পারে তা বাগি এবং অগোছালো হতে পারে।

পাশাপাশি একটি পাশ নোট, /etc/profileকেবল বাশ নয়, সমস্ত শাঁস দ্বারা উত্সাহিত। বাশ নির্দিষ্ট কনফিগারেশন ফাইলটি বাশার্ক এবং কেবল ইন্টারেক্টিভ শেলের জন্য উত্সাহিত।


3
দ্বিতীয় অনুচ্ছেদ আকর্ষণীয়। যেহেতু বিভিন্ন শেলগুলি বিভিন্ন সিনট্যাক্সকে সমর্থন করে, এর জন্য একটি উল্লেখযোগ্য সাধারণ সিনট্যাক্স থাকা প্রয়োজন। বাশ এবং শের জন্য সত্য, তবে আমি সিএসএস বা টিসিএসের মতো অন্যদের পক্ষেও তেমনটি মনে করি না, যার নিজস্ব বৈশ্বিক লগইন স্টার্টআপ স্ক্রিপ্ট রয়েছে। অনেক সিস্টেমে, / বিন / শ কেবলমাত্র / বিন / বাশের লিঙ্ক। Sh যখন ডাকা হয় তখন বাশ তার আচরণটিকে পিক্সিক্স-কমপ্লায়েন্ট হিসাবে পরিবর্তিত করে। সুতরাং কেউ ভাবতে পারেন যে /etc/profile.d এ স্ক্রিপ্টগুলির লেখকগণকে পিক্স সাবসেটের বাইরে ব্যাশ এক্সটেনশনগুলি এড়াতে সাবধান হওয়া দরকার।
sotsnoot

লিনাক্সের অধীনে দুটি বড় শেল প্রকারের জন্য পৃথক .csh এবং .sh ফাইল রয়েছে।
13:25

0

জর্ডানমের উত্তরটি ভুল। /etc/profileসমস্ত শাঁস দ্বারা উত্সাহিত হয় না। আপনি উল্লেখ হিসাবে, এটি দ্বারা উত্সাহিত করা হয় না csh, tcsh- আমি সম্পর্কে নিশ্চিত না zsh। এটি বর্ন শেল ( sh) ডেরিভেটিভস, যেমন কর্ন শেল ( ksh) এবং বেস ( ( ) ) দ্বারা উত্সাহিত bashcshব্যবহার /etc/login। যে লোকেরা একচেটিয়াভাবে বোর্ন শেল ডেরিভেটিভস ব্যবহার করে তাদের অন্যান্য শাঁসগুলি ভুলে যাওয়ার প্রবণতা রয়েছে। তারা /etc/profileএটি "সমস্ত ব্যবহারকারীদের" জন্য প্রয়োগ হওয়ার প্রত্যাশায় কিছু যোগ করে এবং তারপরে যখন বিজোড় সি শেল ব্যবহারকারী (এবং আমরা একটি বিজোড় অনেক) তাদের কনফিগার করা জিনিসগুলি না পেয়ে অবাক হয় /etc/profile

তবুও, লোকে অন্যান্য বোর্ন শেল ডেরিভেটিভ শেলগুলির উপস্থিতি সম্পর্কে ভুলে যাওয়ার ঝোঁক থাকে। যদি তারা ব্যবহার করে bashবা ksh, তারা বিন্যাসে নির্দ্বিধায় /etc/profileবর্ন শেলের ক্ষেত্রে বৈধ নয়, যেমন কোনও ভেরিয়েবলের সংজ্ঞা দেওয়া এবং এটি একই লাইনে রফতানি করা বলে। তারপরে আপনি এমন কিছু স্ক্রিপ্ট পাবেন যা এটি করে #!/bin/shএবং এটি সিনট্যাক্সের উপরে চাপ দেয়। /etc/profileবোর্ন শেল সুসংগত সিনট্যাক্স আটকে থাকা উচিত।

তেমনি, আপনার নিজের এটিতে আটকে থাকা উচিত .profile( .bash_profileআপনি কিছু ব্যাশ সিনট্যাক্স চাইলে ব্যবহার করুন ) - এটি কিছুটা অতিরিক্ত টাইপিং হতে পারে তবে এটি অতিরিক্ত টাইপিং যা আপনি একবারে করে ফেলুন। রেফারেন্স ${HOME}এবং না ~, ইত্যাদি। ইউনিক্সের কিছু স্বাদ, ক্রোন জবসের অধীনে চলমান sh, আপনার প্রতিটি লাইন Makefileপ্রক্রিয়াজাত করা হয় sh, সুতরাং আপনি যদি ইউএনআইএক্সের একাধিক স্বাদে কাজ করছেন তবে এটি আপনার .profileবোর্ন শেলটিকে সামঞ্জস্যপূর্ণ রাখার জন্য অর্থ প্রদান করে । সিসএডমিন হিসাবে, আমি কাউকে কাউকে .profileবোর্ন শেল সামঞ্জস্যপূর্ণ ঠিক করার মাধ্যমে কতবার সাহায্য করেছি তা বলতে পারছি না ।

লিনাক্স-এ, এটির /bin/shএকটি লিঙ্ক /bin/bashএবং আপনি যখন এটি চালান, এটি এমন একটি পথ দেখায় যা এটি চালানোর জন্য ব্যবহৃত হয়েছিল এবং (তত্ত্ব অনুসারে) কেবল নিজেকে সেই জিনিসগুলির মধ্যে সীমাবদ্ধ করে যা বোর্ন শেল সমর্থন করে। একইভাবে, viলিনাক্সে আসলেই vimআবার নিজেকে সীমাবদ্ধ করা হয়। মাঝেমধ্যে আপনি বৈশিষ্ট্যগুলি "রক্ত দিয়ে" দেখেন। মাঝেমধ্যে vimভান করে viকিছু এমন কিছু করে যা vimসমর্থন করে যা এটি সমর্থন viকরে না কারণ লেখকরা vimএটি "vi পিছনের সামঞ্জস্য" মোডে এটি অক্ষম করতে ভুলে গিয়েছিলেন। আমি ভেবে কিছু অবাক হব না যদি এমন কিছু "ব্লাড" মাধ্যমে কিছু বৈশিষ্ট্যযুক্ত bashহওয়ার ভান করে sh। কিছু বৈশিষ্ট্য "লিনাক্সের উপর বোর্ন শেলের উপর কাজ করে" তবে অবাক হওয়ার কিছু নেই, তবে সিস্টেম ভি বা বিএসডি ভিত্তিক ইউএনআইএক্স (এআইএক্স, ওপেনবিএসডি ইত্যাদি) তে নয়।


আপনি কি "লিনাক্সের /bin/shসাথে একটি লিঙ্ক " নিশ্চিত /bin/bash? এটি একটি শব্দ বিবৃতি।
41754
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.