লগইন করার সময় স্ক্রিপ্টগুলির সিকোয়েন্স


41

আমি আমার আমার লগইন কনফিগারেশন কেন্দ্রীভূত করতে চাই ~/.bash_profile। সেখানে ~/.bashrcডিফল্টরূপে একটি ছিল তবে আমি এটিটি একটি দ্বারা প্রতিস্থাপন করেছি ~/.bash_profile

যাইহোক, আমি যখন লগ ইন করি তখন আমার ~/.bash_profileউত্সাহিত হওয়ার আগে কিছু এবং নিম্নলিখিতগুলি প্রদর্শন করে:

Linux ubnt10-dev1 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc

  System information as of Fri May  9 12:17:39 EDT 2014

  System load:  0.01              Processes:           74
  Usage of /:   5.5% of 18.58GB   Users logged in:     0
  Memory usage: 4%                IP address for eth0: 123.x.x.x
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/

New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Fri May  9 12:11:52 2014 from 123.x.x.x

আমি এটি মুছে ফেলতে চাই যাতে কেবলমাত্র আমার নিজের স্প্ল্যাশ গ্রিটিংসটি আমার ~/.bash_profileপ্রদর্শিত ডিসপ্লেগুলিতে সংজ্ঞায়িত হয় তবে আমি যখন কোনও ব্যবহারকারী লগ ইন করি তখন স্ক্রিপ্টগুলি উত্সাহিত / সম্পাদিত স্ক্রিপ্টগুলির যুক্তি / সিকোয়েন্স সম্পর্কে নিশ্চিত নই। আপনি কি আমাকে আলোকিত করতে পারবেন?

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

উত্তর:


53

এটি এক ধরণের জটিল। প্রথমত, বিশদটি আপনি কী ধরণের শেল চালাচ্ছেন তার উপর নির্ভর করে। নিজেকে চুরি করতে :

  • আপনি যখন একটি টার্মিনাল এমুলেটর খোলেন ( gnome-terminalউদাহরণস্বরূপ), আপনি একটি ইন্টারেক্টিভ, নন-লগইন শেল হিসাবে পরিচিত যা সম্পাদন করছেন ।

  • আপনি যখন কমান্ড লাইন থেকে আপনার মেশিনে লগইন করেন বা কমান্ড যেমন su - usernameচালাচ্ছেন আপনি একটি ইন্টারেক্টিভ লগইন শেল চালাচ্ছেন ।

  • আপনি যখন গ্রাফিকালি লগ ইন করবেন তখন আপনি সম্পূর্ণ ভিন্ন কিছু চালাচ্ছেন। বিশদগুলি আপনার সিস্টেম এবং গ্রাফিকাল পরিবেশের উপর নির্ভর করবে তবে সাধারণভাবে এটি গ্রাফিকাল শেল যা আপনার লগইন নিয়ে কাজ করে। যদিও অনেকগুলি গ্রাফিকাল শেল (উবুন্টু ডিফল্ট সহ) পড়বে /etc/profileএবং ~/.profileসেগুলি সমস্তই করে না।

  • অবশেষে, আপনি যখন শেল স্ক্রিপ্টটি চালাবেন, এটি একটি অ-ইন্টারেক্টিভ, অ-লগইন শেলটিতে চালিত হবে ।

চালু করা অবস্থায় ব্যাশ করা ফাইলগুলি যে শেলটির ধরণটি চালায় তার উপর নির্ভর করে। নিম্নলিখিতটি man bash(জোর দেওয়া খনি) এর ইনভোকেশন বিভাগের একটি অংশ রয়েছে :

যখন বাশকে একটি ইন্টারেক্টিভ লগইন শেল হিসাবে, বা - লগিন বিকল্পের সাথে একটি অ-ইন্টারেক্টিভ শেল হিসাবে ডাকা হয়, এটি প্রথমে ফাইল / ইত্যাদি / প্রোফাইল থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে , যদি সেই ফাইলটি বিদ্যমান থাকে। এই ফাইলটি পড়ার পরে, এটি সেই ক্রমে ash / .bash_profile, ~ / .bash_login, এবং ~ / । প্রোফাইলে অনুসন্ধান করে এবং উপস্থিত এবং পঠনযোগ্য যা প্রথমটি থেকে আদেশগুলি পড়ে এবং কার্যকর করে। শেলটি এই আচরণটি আটকাতে শুরু করা হলে --noprofile বিকল্পটি ব্যবহার করা যেতে পারে।

লগইন শেল নয় এমন একটি ইন্টারেক্টিভ শেলটি শুরু করা হলে, বাশ /etc/bash.bashrc এবং ~ / .bashrc থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে , যদি এই ফাইলগুলি উপস্থিত থাকে। এটি --norc বিকল্প ব্যবহার করে বাধা দেওয়া হতে পারে। --Rcfile ফাইল অপশনটি বাশকে /etc/bash.bashrc এবং ~ / .bashrc এর পরিবর্তে ফাইল থেকে আদেশগুলি পড়তে এবং সম্পাদন করতে বাধ্য করবে।

সেগুলি ইনিশিয়েশন ফাইল। আপনি /etc/environmentযেখানে বিশ্বব্যাপী পরিবেশগত ভেরিয়েবল সেট করতে পারেন তবে তা স্রোসডের পরিবর্তে পড়েছে (এর ভিতরে থাকা কমান্ডগুলি কার্যকর করা হয় না তবে পরিবর্তনশীল সংজ্ঞা সেট করা থাকে)।

এখন, আপনি যে শুভেচ্ছা দেখছেন সেটি আবার অন্য কিছু। এটি সেট করা আছে /etc/motdএবং এর মাধ্যমে প্রদর্শিত হয় pam_motd। হিসাবে ব্যাখ্যা করা হয়েছে man motd:

সফলভাবে লগইন করার পরে / etc / motd এর সামগ্রীগুলি পাম_মোটড (8) দ্বারা প্রদর্শিত হয় তবে এটি লগইন শেলটি কার্যকর করার ঠিক আগে just

সংক্ষিপ্ত বিবরণ "মোড্ড" বলতে "দিনের বার্তা" বোঝায়, এবং এই ফাইলটি traditionতিহ্যগতভাবে ঠিক সেই জন্য ব্যবহার করা হয়েছে (এটির জন্য সমস্ত ব্যবহারকারীর মেলের চেয়ে অনেক কম ডিস্ক স্পেস প্রয়োজন)।

ডেবিয়ান জিএনইউ / লিনাক্সে, /run/motd.dynamic এর সামগ্রীটি প্রদর্শিত হয়। এই ফাইলটি বুট-এ /etc/init.d/motd দ্বারা উত্পাদিত হয়।

বার্তাটি সরাতে কেবল /etc/motdফাইলটি খালি করুন এবং নিশ্চিত করুন যে উপস্থিত থাকলে কিছুই তৈরি হচ্ছে /etc/init.d/motdনা।


যাইহোক, আপনি যে আউটপুটটি দেখান তার উপর ভিত্তি করে, আপনি লগ ইন করছেন বলে মনে হচ্ছে আপনি sshযার মাধ্যমে আপনি একটি ইন্টারেক্টিভ লগইন শেল চালাচ্ছেন , তার অর্থের জন্য উপরে দেখুন। সুতরাং, সংক্ষেপে, আপনি লগ ইন করার সময় আপনার যে বিষয়গুলির যত্নশীল তা হ'ল (এবং এই ক্রমে):

  1. pam_motdপিএএম লাইব্রেরির মডিউলটির মাধ্যমে এসএসএইচ ডেমন এর সামগ্রীগুলি প্রদর্শন করে /etc/motdpam_envমডিউল মাধ্যমে , এটি থেকে /etc/environmentএবং পরিবেশের পরিবর্তনশীল সেট করে ~/.pam_environment
  2. একটি লগইন শেল শুরু হয়েছে, এবং নিম্নলিখিত ফাইলগুলি ক্রমে পড়া হয়:
    1. /etc/profile
    2. /etc/bash.bashrc(ডিফল্ট উবুন্টু /etc/profileউত্স /etc/bash.bashrc)।
    3. ~/.bash_profile। অন্যান্য ফাইলগুলি যা এখানে পড়তে পারে ( ~/.profileএবং ~/.bash_login) তা উপেক্ষা করা হয় কারণ এটি ~/.bash_profileবিদ্যমান।

5
এই জিনিসগুলি স্ব-আবিষ্কার করার জন্য একটি দুর্দান্ত কৌশল হ'ল সেন্ডিনেল ভেরিয়েবলগুলি চারপাশে স্থাপন করা। আমি বলতে চাচ্ছি, আমি করা export SET_IN_ETC_PROFILE=yesমধ্যে /etc/profile, export SET_IN_HOME_ZSHRC=yesমধ্যে ~/.zhshrcপুনরায় বুট করার (আমি একটি zsh ব্যবহারকারী am), ইত্যাদি ... তারপর এবং একটি সুন্দর env|grep SET_INসব গল্প বলা হবে। ডেস্কটপ অ্যাপ্লিকেশন (কোন আপনি টার্মিনাল ব্যবহার না করে ড্যাশ বা ডাব্লুএম থেকে প্রবর্তন করেছেন) কোন ভেরিয়েবলগুলি দেখা যায় তা দেখতে, জিজ্ঞাসাবাবু
356973/16395

1
সুতরাং আপনি যখন ssh, এটি একটি ইন্টারেক্টিভ শেল হবে, সঠিক?
দ্বিখণ্ডক 21

@ প্রভাবশালী একটি ইন্টারেক্টিভ লগইন শেল, হ্যাঁ। যখন আপনি ট্যুর লোকাল মেশিনে একটি টার্মিনাল খুলেন, এটি একটি ইন্টারেক্টিভ, অ লগইন শেল।
টেরডন

@ রুমানো আমি আপনার মন্তব্যগুলিকে উস্কে দিয়েছি। তবে কয়েক মুহুর্ত পরে envঅর্ডার কার্যকর করে দেওয়ার আদেশের সাথে কোনও সম্পর্ক নেই।
পেঙ্গে গেঞ্জ

2
@ xiaobai অবশ্যই নয়, মূল কথাটি SET_INআপনাকে দেখাবে যে কোন ফাইলগুলি পড়া হয়েছে, কোন ক্রমে সেগুলি পড়া হয়েছে। অর্ডারটি মানসম্মত, আমার উত্তরটিতে থাকা ম্যান পৃষ্ঠার অংশগুলিতে এটি প্রদর্শিত হয় is
টেরডন

1

আপনি যখন ssh- এর মাধ্যমে লগইন করেন তখন যে তথ্য আপনি দেখছেন তা আগে / ইত্যাদি / প্রোফাইল তৈরির আগে তৈরি হয়েছিল। /Etc/update-motd.d ফাইলের ক্রমটি একবার দেখুন। এটি আপনাকে দেখাবে যে আপনি যে বার্তাগুলি দেখছেন তা বিভিন্ন স্ক্রিপ্ট দ্বারা উত্পন্ন হয়।


1
এটি ইতিমধ্যে শীর্ষ উত্তরে coveredাকা আছে, তবে আমি আপনার ব্রেভিটির প্রশংসা করি। +1 :)
ওয়াজান্দ্রিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.