টার্মিনাল খোলার সময় কেন। / .Bash_ প্রোফাইলে উত্সাহ পাওয়া যাচ্ছে না?


175

সমস্যা

আমার একটি উবুন্টু 11.04 ভার্চুয়াল মেশিন রয়েছে এবং আমি আমার জাভা বিকাশের পরিবেশ স্থাপন করতে চেয়েছিলাম। আমি নীচের মত করেছিলাম

  1. sudo apt-get install openjdk-6-jdk
  2. নিম্নলিখিত এন্ট্রিগুলি ~ / .bash_ প্রোফাইলে যুক্ত করা হয়েছে

    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    
    export PATH=$PATH:$JAVA_HOME/bin
  3. পরিবর্তনগুলি সংরক্ষণ করুন এবং প্রস্থান করুন

  4. আবার একটি টার্মিনাল খুলুন এবং নিম্নলিখিত টাইপ করুন

    echo $JAVA_HOME   (blank)
    echo $PATH        (displayed, but not the JAVA_HOME value)
  5. কিছুই হয়নি, যেমন জাভাআহোম রফতানি এবং এটি পাঠের সংযোজন কখনও করা হয় নি।

সমাধান

আমাকে ~ / .bashrc এ গিয়ে ফাইলের শেষের দিকে নিম্নলিখিত এন্ট্রিটি যুক্ত করতে হয়েছিল

#Source bash_profile to set JAVA_HOME and add it to the PATH because for some reason is not being picked up
. ~/.bash_profile

প্রশ্নাবলি

  1. আমাকে কেন এটা করতে হয়েছিল? আমি ভাবলাম বাশ_প্রোফাইল, বাশ_লগিন বা প্রোফাইল দু'জনের অনুপস্থিতিতে বাশার্কের আগে প্রথমে মৃত্যুদন্ড কার্যকর করা হবে।
  2. এই ক্ষেত্রে আমার টার্মিনালটি একটি লগ-ইন শেল ছিল?
  3. যদি তাই হয়, কেন টার্মিনালটির পরে su করার সময় এবং পাসওয়ার্ডটি রাখার সময় এটি প্রোফাইল কার্যকর করে না যেখানে আমি উপরে উল্লিখিত রফতানিও সেট করেছিলাম?

উত্তর:


223

~/.bash_profileইন্টারঅ্যাকটিভ লগইন মোডে শুরু করার সময় কেবল বাশ দ্বারা উত্সাহিত হয়। এটি সাধারণত যখন আপনি কনসোলে লগইন করেন ( Ctrl+ Alt+ F1.. F6), বা এসএসএসের মাধ্যমে সংযুক্ত হন connect

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

আপনি যখন কোনও টার্মিনাল খুলবেন, টার্মিনালটি (অ-লগইন) ইন্টারেক্টিভ মোডে বাশ শুরু করবে, যার অর্থ এটি উত্স হবে ~/.bashrc

আপনার এই পরিবেশের ভেরিয়েবলগুলি রাখার জন্য সঠিক জায়গাটি রয়েছে ~/.profileএবং পরের বার আপনি লগ ইন করার পরে এটিকে প্রভাব দেওয়া উচিত।

~/.bash_profileথেকে উত্সাহিত করা ~/.bashrcভুল সমাধান। এটি অন্য উপায়ে কাছাকাছি হওয়ার কথা; ~/.bash_profileউত্স উচিত ~/.bashrc

এটি কেন এমন হয় তার কিছু ইতিহাস সহ আরও বিশদ ব্যাখ্যার জন্য ডটফাইসগুলি দেখুন ।

(পার্শ্ব নোটে, অ্যাপের মাধ্যমে ওপেনজেডক ইনস্টল করার সময়, প্যাকেজটি দ্বারা সিমলিংকগুলি স্থাপন করা উচিত, যাতে আপনার সত্যিকার অর্থে সেটআপ JAVA_HOMEবা পরিবর্তন করার প্রয়োজন না হয় PATH)


6
আমি খুঁজে পেয়েছি যে উবুন্টু 12-এ সাইডবার থেকে টার্মিনালটি খোলার সময় ~ /। প্রোফাইল ফাইলটি লোড হয় না।
jcollum

3
@jcollum এটা ভাল। .profileআপনি যখন লগ ইন করবেন কেবল তখনই তা উত্সাহিত করা উচিত
গিরিহা

2
ওহ, টার্মিনাল খোলা লগ ইন করার মতো নয় ... আমি ভাবছিলাম টার্মিনালে লগ ইন করব ।
jcollum

2
মনে রাখবেন যে উপস্থিত .profileথাকলে বাশ দ্বারা উপেক্ষা করা হবে .bash_profile। আমার উত্তরটি এখানে এবং man bashআরও তথ্যের জন্য দেখুন।
টেরডন

3
@ এটারডন, হ্যাঁ, তবে গ্রাফিকভাবে লগ ইন করার সময় বাশ জড়িত নয়, তাই এটি সরাসরি হয়ে যায় .profile
গিরিহা

48

আপনার বাশ শেলটি লগইন-শেল হিসাবে চালু হয়ে শুরু হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন:

shopt login_shell

উত্তরটি যদি হয় তবে offআপনি লগইন শেলটি চালাচ্ছেন না।

ব্যাশ ম্যানুয়াল এর পড়ুন আবাহন কিভাবে ব্যাশ সার্চ (অথবা পড়া না) বিভিন্ন কনফিগারেশন ফাইল বিভাগে।

এর থেকে অংশ man bash:

যখন বাশকে একটি ইন্টারেক্টিভ লগইন শেল বা বিকল্প হিসাবে একটি ইন্টারেক্টিভ শেল হিসাবে ডাকা হয় --login , এটি প্রথমে ফাইলটি থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে /etc/profile, যদি সেই ফাইলটি বিদ্যমান থাকে। যে ফাইল পড়ার পর, এটা জন্য দেখায় ~/.bash_profile, ~/.bash_loginএবং ~/.profile, যাতে, এবং পড়ে এবং প্রথম এক যে বিদ্যমান এবং পাঠযোগ্য থেকে কমান্ড সঞ্চালন করে।

suঅন্যদিকে ডিফল্টরূপে লগইন শেলও শুরু করে না, --loginঅপশনটি ব্যবহার করে আপনাকে এটি করতে হবে ।


9
শটপ লগইন_শেল কমান্ডের জন্য অনেক ধন্যবাদ । অসাধারণ!!
বিরিয়াতো

27

আমি মনে করি এটি উল্লেখ করার মতো যে আপনি প্রোফাইল পছন্দগুলি সম্পাদনা করে লগইন শেল (যেমন। বাশ-এল) ব্যবহার করতে জিনোম-টার্মিনালের ডিফল্টটি পরিবর্তন করতে পারেন।

সম্পাদনা -> প্রোফাইল পছন্দসমূহ -> শিরোনাম এবং কমান্ড ট্যাবে যান "লগইন শেল হিসাবে কমান্ড চালান" বিকল্পটি পরীক্ষা করে


1
এই সেটিংটি সক্ষম করার জন্য ডাউনসাইডগুলি কী কী?
ক্রিশ

2
@ ক্রিস আপনি প্রচুর উপলক্ষে প্রয়োজনের তুলনায় কেবল কোডটি আরও কিছু লোড করছেন। আপনার ~/.bash_profileসত্যিকারের দ্রুত মূল্যায়ন করা হয় কিনা তা সম্ভবত বিবেচ্য নয় , সম্ভবত এটিই ঘটেছে। একটি ভাল জিনিস যাচাই করা হ'ল অন্যান্য প্রক্রিয়াগুলির জন্য যে কোনও কলগুলি তা সাধারনত ব্যয়বহুল cha
vaab

14

আপনি যদি কোনও টার্মিনাল খুলেন বা suশেলটি চালান তবে লগইন শেল হিসাবে নয় তবে একটি সাধারণ ইন্টারেক্টিভ শেল হিসাবে চালিত হয়। সুতরাং এটি পড়া ~/.bashrcকিন্তু না ~/.bash_profile। এটি আপনার শেলটিকে লগইন শেল হিসাবে চালিত করার জন্য আপনি বিকল্পটি suদিয়ে চালাতে পারেন -l

আপনি যখন জিইউআইয়ের সাথে কাজ করছেন তখন শেলটি সাধারণত লগইন শেল হিসাবে কখনও চালিত হয় না তাই আপনার সমস্ত স্টাফ রাখলে সাধারণত ভাল ~/.bashrc


1
এটিই আমি করেছি এবং এটি কাজ করেছিল, তবে নীচের লোকটি কী বলেছে তা পরীক্ষা করে দেখুন, তিনি এটি বাশার্কে রাখার পরিবর্তে এটি প্রোফাইলে রেখে দেওয়া একটি খারাপ ধারণা বলে মনে করেন। .... আরে দু'ভাবেই কাজ করে, অনেক অনেক ধন্যবাদ।
ভিরিয়াটো

4

টি এল; ডিআর

শাস্ত্রীয় প্রস্তাবিত উবুন্টু সেটআপে, ~/.bash_profileকেবলমাত্র নির্দিষ্ট ইভেন্টগুলিতে মূল্যায়ন হয়। এবং এটি বোধগম্য হয়।

আপনার স্টাফ রাখুন ~/.bashrc, এটি প্রতিবার মূল্যায়ন করা হবে।

ঠিক আছে, আমি বুঝতে চাই, কেন এটি বোঝায়?

কী চলছে তা বোঝার জন্য কীগুলি:

  • লিনাক্সের সমস্ত প্রক্রিয়াতে এনভায়রনমেন্ট ভেরিয়েবল রয়েছে এবং তা ব্যবহার করে
  • পরিবেশের পরিবর্তনগুলি উত্তরাধিকার সূত্রে প্রাপ্ত
  • এইভাবে আপনার সমস্ত প্রক্রিয়ার জনককে একবার সেট করা যথেষ্ট (বিশেষত যদি এর জন্য কিছু গণনার সময় প্রয়োজন হয় requires)
  • আপনার সমস্ত প্রক্রিয়ার জনক সাধারণত আপনার ডিভাইসে লগ ইন করার পরে চালু হয় (আপনার শংসাপত্র দিন)।
  • আপনার কম্পিউটারে লগ ইন করার সময় এমন কিছু জিনিস আপনি করতে চাইবেন (উদাহরণস্বরূপ নতুন মেলের জন্য পরীক্ষা করুন ...)।

সুতরাং "লগইন" সময়টি সাধারণত:

  • কনসোল মোডে, আপনি যখন লগইন করবেন (Ctrl-Alt F1 সহ) বা এর মাধ্যমে sshশেলটি সমস্ত প্রক্রিয়ার জনক হবে, এটি আপনার লোড করবে ~/.bash_profile
  • গ্রাফিক মোডে, আপনি যখন আপনার সেশনটি খুলবেন, প্রথম প্রক্রিয়াটি ( gnome-sessionশাস্ত্রীয় উবুন্টুর জন্য) পড়ার দায়িত্বে থাকবে
    .profile

ঠিক আছে, তাই আমার জিনিস রাখা যেখানে?

এটি বরং জটিল, পুরো গল্পটি এখানে । তবে এখানে একটি রান ডাউন যা উবুন্টু ব্যবহারকারীদের পক্ষে বেশ সাধারণ। সুতরাং যে বিবেচনা:

  • আপনি bashশেল ব্যবহার ,
  • আপনি যদি একটি আছে ~/.bash_profileএবং অনুসরণ সুপারিশ লোড যোগ করার জন্য ~/.bashrcআপনার ~/.bash_profileঅন্তত পেতে যাতে একটি ফাইল মূল্যায়ন পরার যে যাই হোক না কেন আবাহন mecanism হয়

জিনিসগুলি কোথায় রাখা উচিত তার একটি দ্রুত পরামর্শ।

  • b / .bashrc ( সমস্ত ক্ষেত্রে মূল্যায়ন করা হয় , আপনি প্রস্তাবটি অনুসরণ করেন তবে)

    জন্য দ্রুত-নিরীক্ষার এনভায়রনমেন্ট ভেরিয়েবল এবং আপনার কোড ব্যবহারকারী-শুধুমাত্র এবং ব্যাশ শুধুমাত্র কম্যান্ড-লাইন ব্যবহার (উদাহরণস্বরূপ alias লেখা)। বাশিজম স্বাগত।

    এটি নিজের উপর বোঝা হয়ে যায়:

    • গ্রাফিকাল সেশনে একটি নতুন শেল উইন্ডো / ফলক তৈরি করুন।
    • কলিং bash
    • screenনতুন ফলক বা ট্যাব। (না tmux!)
    • গ্রাফিকাল কনসোল ক্লায়েন্টের কোনও বাশ উদাহরণ ( terminator/ gnome-terminal...) আপনি যদি "লগইন শেল হিসাবে কমান্ড চালান" বিকল্পটি টিক না দেন

    এবং এটি পূর্ববর্তী সুপারিশের জন্য অন্যান্য সমস্ত অনুষ্ঠানে লোড হয়ে যাবে।

  • b / .bash_profile ( কেবলমাত্র নির্দিষ্ট উপলক্ষে মূল্যায়ন করা হয় )

    জন্য ধীর মূল্যায়ন এনভায়রনমেন্ট ভেরিয়েবল এবং আপনার কোড ব্যবহারকারী-শুধুমাত্র এবং কনসোল-অধিবেশন প্রক্রিয়া। বাশিজম স্বাগত। এটি লোড হয়:

    • কনসোল লগইন (Ctrl-Alt F1),
    • এই মেশিনে ssh লগইন,
    • tmuxনতুন ফলক বা উইন্ডোজ (ডিফল্ট সেটিংস), (নয় screen!)
    • এর স্পষ্ট কল bash -l,
    • গ্রাফিকাল কনসোল ক্লায়েন্টের কোনও বাশ উদাহরণ ( terminator/ gnome-terminal...) কেবলমাত্র যদি আপনি "লগইন শেল হিসাবে কমান্ড চালান" বিকল্পটি টিক করেন।
  • ~ /। প্রোফাইল (কেবল গ্রাফিকাল-সেশনে মূল্যায়ন করা হয়)

    জন্য ধীর মূল্যায়ন বিভিন্ন পরিবেশের সঙ্গে নো bashism আপনার জন্য শুধুমাত্র ব্যবহারকারী এবং সমস্ত গ্রাফিকাল-অধিবেশন প্রক্রিয়া। এটি আপনার গ্রাফিকাল ইউআইতে লগইন হওয়ার পরে লোড হয়ে যায়।


অনুষ্ঠান যে bash একটি প্রোফাইল ফাইল লোড করে, এটি লোড করা হবে .profileযদি .bash_profileকোন অস্তিত্ব নেই।
মারু

পরিষ্কার ব্যাখ্যার জন্য আপনাকে অনেক ধন্যবাদ। এটা আমার মত newbies সাহায্য করে। ম্যাক মোজভে-তে, আমি যদি envvari / .bashrc এ ভেরিয়েবলগুলি রেখেছি এবং উত্সটি করি এবং তারপরে আমি এনভিভি ভেরিয়েবল সেটটি দেখতে না পাই (আমি আইটার্ম বন্ধ করে পুনরায় খোলার চেষ্টা করেছি)। তবে আমি লক্ষ্য করেছি যে আমি যখন অ্যান্ড্রয়েড স্টুডিও এবং অন্যান্য অ্যাপ্লিকেশনগুলি ইনস্টল করি তখন সেই সমস্ত এনভ ভার্স সেট করা হয়েছিল /.bash_profile। সুতরাং আমি /.bash_profileএটি যোগ করার সময় কবজ মত কাজ। কেন এমন?
সোফস 1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.