আমি লগ আউট না করে এবং পিছনে প্রবেশ না করে .bashrc কীভাবে পুনরায় লোড করব?


উত্তর:


2631

আপনাকে কেবল কমান্ডটি প্রবেশ করতে হবে:

source ~/.bashrc

অথবা আপনি কমান্ডটির সংক্ষিপ্ত সংস্করণটি ব্যবহার করতে পারেন:

. ~/.bashrc

88
এটি লগ ইন এবং পিছনে আউট হিসাবে ঠিক একই নয়। বলুন আপনার .bashrc এ নিম্নলিখিত লাইনটি ছিল: export PATH=$PATH:fooএবং তারপরে আপনি এটিকে পরিবর্তন করেন export PATH=$PATH:bar। আপনি লগ ইন করুন এবং আউট ব্যাক, শুধুমাত্র barপাথ হতে হবে, কিন্তু আপনি কি পরামর্শ যদি আপনি না, উভয় fooএবং barপাথ মধ্যে হতে হবে। আপনি কি এই কাছাকাছি উপায় জানেন?
হাইকম্যান্ডার 4

7
@ হাইকম্যান্ডার 4 - আপনি যা চান তা করার একটি অত্যন্ত অসন্তুষ্টির উপায় "বাশ-এল" করা তবে এটি আসলে একটি নতুন সাবস্কেল তৈরি করে এবং যখন আপনি লগআউট করেন তখন আপনি ঘেরের শেলটিতে ফিরে আসবেন যেখানে "foo" এখনও PATH এ রয়েছে। আপনি যদি কেবলমাত্র পাথের বিষয়ে আগ্রহী হন, আপনি "पथপথটি আনসেট করুন" করতে পারেন এবং এটিকে স্ক্র্যাচ থেকে পুনর্গঠন করতে পারেন, তবে সম্ভবত আপনার .bashrc স্যুর করার আগে "PATH = / বিন: / usr / বিন" করা আরও সহজ / নিরাপদ। লগ-ইন করার সময়ে প্যাথ-এ ভেরিয়েবলটি কীভাবে তৈরি করা যায় তা আসলে যুক্তিসঙ্গত জটিল, লগইন থেকে খুব কম সময়ে ইনপুট জড়িত থাকে ("ম্যান লগইন" দেখুন) এবং / ইত্যাদি / প্রোফাইল ("ম্যান বাশ" দেখুন)।
জর্জ হকিন্স

2
@ অ্যালেক্স আপনি it / .Bashrc লাইনটি ~ / .bash_profile এ যোগ করে এটি স্বয়ংক্রিয় করতে পারেন, যদিও আমি জানি না যে এটি একটি ভাল অনুশীলন কিনা।
বিবেক গনি

4
আমি এমন একটি উপাধি (যা আপনি ~ / .Bashrc বা ~ / .Bash_aliases সংরক্ষণ করতে পারেন) তৈরি করার পরামর্শ দিচ্ছি যা .bashrc খোলায় এবং সম্পাদকটি প্রস্থান করার পরে এটি পুনরায় লোড করে দেয়। আপনি এত মত উপনাম দুটি কমান্ড মিশ্রন, উদাহরণস্বরূপ দ্বারা এটা করতে পারেন (যদি তেজ আপনার পছন্দের সম্পাদক, অন্যথায় এটা অন্য কিছু বের অদলবদল): alias editbashrc='vim ~/.bashrc; source ~/.bashrc'। এটি সম্পাদনাটি আরও মসৃণ করে তুলবে, যেহেতু কাস্টম ওরফে ব্যবহার করে সম্পাদনা করার পরে, পুনরায় লোডিং সম্পর্কে আপনার ভাবার দরকার নেই।
স্যামুয়েল লাম্পা

6
এটি কেবলমাত্র বর্তমান টার্মিনালকে প্রভাবিত করবে ।
matepal297

283

অথবা আপনি ব্যবহার করতে পারেন:

exec bash

এটি একই কাজ করে এবং মনে রাখা সহজ (অন্তত আমার জন্য)।

execকমান্ড সম্পূর্ণরূপে নির্দিষ্ট কম্যান্ড-লাইন চালিয়ে শেল প্রক্রিয়া প্রতিস্থাপন করে। আমাদের উদাহরণস্বরূপ, এটি বর্তমান শেলটি যা আছে তা নতুন পরিবর্তনের bash(আপডেট কনফিগারেশন ফাইলগুলির সাথে) প্রতিস্থাপন করে ।


13
আপনি দয়া করে source .bashrcকমান্ডের পার্থক্য ব্যাখ্যা করতে পারেন এবং exec bash?
মুরাদীন

18
@ মুরাদিন, sourceএকটি অন্তর্নির্মিত শেল কমান্ড যা বর্তমান শেলটিতে আর্গুমেন্ট হিসাবে পাস করা ফাইলের বিষয়বস্তু কার্যকর করে । সুতরাং আপনার উদাহরণে এটি বর্তমান শেলটিতে .bashrc ফাইলটি কার্যকর করে। এবং execকমান্ড একটি প্রদত্ত প্রোগ্রামের সাথে শেলটি প্রতিস্থাপন করে, উদাহরণস্বরূপ, এটি আপনার শেলের পরিবর্তে ব্যাশ (আপডেট হওয়া কনফিগারেশন ফাইলগুলির সাহায্যে)
WhoSayIn

3
আমার অতি-নির্দিষ্ট পরিস্থিতিতে, এটি পুরোপুরি কাঁপল। আমার ডকফায়াইল একটি ইনস্টল স্ক্রিপ্ট কার্যকর করে যা .bashrc পরিবর্তন করে। আমার তখন পুনরায় লোড করার দরকার আছে, তবে . ~/.bashrcএর dashপরিবর্তে কার্যকর করব bash, সুতরাং shoptঅনুপস্থিত থাকায় একটি ত্রুটি রয়েছে । sourceশেল থেকে পাওয়া যায় নি, সুতরাং সমাধানটিও বেরিয়ে আসে। আমি এটি চেষ্টা করেছি এবং ডকারের চিত্রটি নির্বিঘ্নে নির্মিত!
এম59

9
মার্জিত, তবে "একই জিনিস করে" সম্পূর্ণ সঠিক নয়। source ~/.bashrcআপনার পুরো শেল পরিবেশ সংরক্ষণ করবে (যদিও এটি সম্ভবত সোর্সিং দ্বারা সংশোধন করা হয়েছে ~/.bashrc) exec bashকেবলমাত্র আপনার বর্তমান শেলের পরিবেশ পরিবর্তনশীলগুলি সংরক্ষণ করবে (শেল ভেরিয়েবল, ফাংশন, বিকল্পগুলি নিখুঁতভাবে বর্তমান শেলটিতে কোনও অ্যাড-হক পরিবর্তন)। আপনার প্রয়োজনের উপর নির্ভর করে এক বা অন্য পদ্ধতির পছন্দ হতে পারে।
mklement0

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

121

করার পরিপূর্ণ এবং বৈপরীত্যের দুই সবচেয়ে জনপ্রিয় উত্তর, . ~/.bashrcএবং exec bash:

উভয় সমাধান কার্যকরভাবে পুনরায় লোড করুন ~/.bashrc, তবে পার্থক্য রয়েছে:

  • . ~/.bashrcবা source ~/.bashrcহবে আপনার বর্তমান শেল সংরক্ষণ:

    • রূপান্তরগুলি যা পুনরায় লোড ছাড়া ~/.bashrcবর্তমান শেলে ( গুন ) করে তোলে, বর্তমান শেল এবং তার রাষ্ট্র হয় সংরক্ষিত , যা বিভিন্ন পরিবেশের, শেল ভেরিয়েবল, শেল বিকল্প, শেল ফাংশন, এবং কমান্ড ইতিহাস অন্তর্ভুক্ত করা হয়েছে।
  • exec bash, বা, আরও দৃly়তার সাথে, exec "$BASH"[1] , আপনার বর্তমান শেলটিকে একটি নতুন উদাহরণের সাথে প্রতিস্থাপন করবে , এবং কেবলমাত্র আপনার বর্তমান শেলের পরিবেশ পরিবর্তনশীলগুলি (আপনি অ্যাড-হককে সংজ্ঞায়িত করেছেন এমনগুলি সহ) সংরক্ষণ করবেন serve

    • অন্য কথায়: শেল ভেরিয়েবল, শেল ফাংশন, শেল অপশন, কমান্ডের ইতিহাসের দিক থেকে বর্তমান শেলের যে কোনও অ্যাড-হক পরিবর্তন হয়।

আপনার প্রয়োজনের উপর নির্ভর করে এক বা অন্য পদ্ধতির পছন্দ হতে পারে।


[1] exec bashতাত্ত্বিকভাবে বর্তমান শেলটি শুরু হওয়া চেয়ে পৃথক bash এক্সিকিউটেবল কার্যকর করতে পারে , যদি এটি এর আগে তালিকাভুক্ত ডিরেক্টরিতে উপস্থিত থাকে $PATH। যেহেতু বিশেষ পরিবর্তনশীল $BASHসর্বদা চলমান শেলটি শুরু করে এমন এক্সিকিউটেবলের পুরো পথ exec "$BASH"রাখে, একই এক্সিকিউটেবল ব্যবহারের গ্যারান্টিযুক্ত । চারপাশে
একটি নোট : ডাবল-উদ্ধৃতি নিশ্চিত করে যে ভেরিয়েবলের মানটি যেমন ব্যাশ দ্বারা ব্যাখ্যা ছাড়াই ব্যবহার করা হয়; যদি মানটির কোনও এম্বেড স্পেস বা অন্যান্য শেল মেটাচার্যাক্টর না থাকে (যা সম্ভবত এই ক্ষেত্রে হয় না), আপনার কঠোরভাবে ডাবল উদ্ধৃতি দরকার নেই, তবে সেগুলি ব্যবহার করা গঠন করা ভাল অভ্যাস।"..."$BASH


আমি আমার প্রশ্ন জিজ্ঞাসার আগে আপনি উত্তর দিয়েছিলেন। এটা জানা ভালো; আমি প্রায়শই একক সেশনের জন্য আমার ক্লাসস্প্যাট সেট করি।
সোয়াইনফিশ

সুতরাং আমি যদি এক্সিকিউটিকে "$ BASH" বলি তবে .bashrc সেটগুলি যে পরিবর্তনশীলগুলি আমি পরবর্তী খোলার শেলটিতে পাওয়া যাবে (আমার বর্তমান সেশনের মতো একই নির্বাহযোগ্য ব্যবহার করে)?
nitinr708

2
@ nitinr708: হ্যাঁ, exec $BASHউত্স হবে ~/.bashrc, তাই আপনি নতুন সেশনে শেল পরিবেশে এর পরিবর্তনগুলি দেখতে পাবেন।
mklement0

@ গেমিং 32, আমি হাইপার-লিঙ্কযুক্ত পাদটীকাটির ধারণার প্রশংসা করি, তবে এটি আসলে কার্যকর হয়নি (এবং এই উত্তরটির চেয়ে ছোট হিসাবে উত্তর দেওয়া, এটি এত গুরুত্বপূর্ণ নয়)।
mklement0

44

কেউ ভুল উত্তর যুক্ত করার জন্য আমার উত্তর সম্পাদনা করেছে, তবে এখানে আসলটি ছিল, যা গৃহীত উত্তরের চেয়ে নিকৃষ্ট।

. .bashrc

25
এটি কেবল তখনই কাজ করবে যদি আপনার বর্তমান ডিরেক্টরিটি আসলে আপনার হোম ডিরেক্টরি হয়। নিম্নলিখিত কাজ করবে:। ~ / .bashrc
ব্রায়ান শোলেটার

6
এই কাজটি কি করে? আমি যখন ".bashrc" করি তখন আসলে কী ঘটছে? ধন্যবাদ!
জেড ড্যানিয়েলস

54
। "উত্স" বিল্টিন কমান্ডের জন্য একটি বেস শর্টকাট। সুতরাং ".bashrc" BASH অনুবাদকারীর কাছে "উত্স .bashrc" এর সমান।
ব্রায়ান শোলেটার

7
কুল। ধন্যবাদ। এখন যে আমি জানতাম না।
জেড ড্যানিয়েলস

2
আমি কেবল যুক্ত করার জন্য একটি সম্পাদনার অনুরোধ জমা দিয়েছি ~/, তবে যেহেতু উপরের উত্তরটি উভয়ই দেখাচ্ছে source ~/.bashrcএবং . ~/.bashrcআমি ভাবছি যে এই উত্তরটি কেবল অপ্রয়োজনীয় হিসাবে মুছে ফেলা উচিত।
ম্যাক্স ঘেনিস 0

18

আপনার পরিবেশের উপর নির্ভর করে কেবল টাইপ করা

bash

কাজ করতে পারে।


15
তবে এটি বর্তমানের মধ্যে একটি নতুন শেল ডেকে আনবে, এইভাবে সম্পদ নষ্ট করবে। উন্নত ব্যবহার @ WhoSayln এর Exec সমাধান যা প্রতিস্থাপন সদ্য বর্তমান শেল এক চালনা করা হয়েছে।
বার্নহার্ড ওয়াগনার

হ্যাঁ কেবল উত্স ব্যবহার করুন। এটি সম্পূর্ণ অপ্রয়োজনীয় এবং বিরক্তিকর।
dylnmc

@ বার্নহার্ড ওয়াগনারের মন্তব্য ছাড়াও, আপনার বর্তমান বাশ ইতিহাসকেও যদি আপনার ভোরের নতুন শাঁস
পিটারচাউলা

এটি ভাল সমাধান যার মাধ্যমে ব্যবহারকারীর সুবিধাগুলি অ্যাক্সেস সীমিত।
টুন্ডে পিজল

সাব-প্রসেসকে আহ্বান করা জটিলতার একটি স্তর যুক্ত করে যার অতিরিক্ত মূল্য নেই।
অ্যালান বেরেজিন

18

এটির সাথে, আপনাকে এমনকি "উত্স ~ / .bashrc" টাইপ করতে হবে না :

আপনার বাশার্ক ফাইলটি অন্তর্ভুক্ত করুন:

alias rc="vim ~/.bashrc && source ~/.bashrc"

প্রতিবার আপনি যখন আপনার বাশার্ক সম্পাদনা করতে চান তখন কেবল " আরসি " নামটি চালান


15
. ~/.bashrc

. একটি পসিক্স-ম্যান্ডেটেড বিল্টিন


বিকল্প

source ~/.bashrc

sourceব্যাশে ডট / পিরিয়ডের প্রতিশব্দ ., তবে পসিক্স শ-এ নয়, তাই সর্বোচ্চ সামঞ্জস্যের জন্য সময়কালটি ব্যবহার করুন।

exec bash
  • execকমান্ড শেলটি একটি প্রদত্ত প্রোগ্রামের সাথে প্রতিস্থাপন করে ... - হুসইআইএন

2
exec bashএখনও বর্তমান শেলের পরিবেশ উত্তরাধিকার সূত্রে প্রাপ্ত। exec env -i bashকাছাকাছি হবে (বা exec env -i bash -lআপনি যদি বর্তমানে লগইন শেলটিতে থাকেন)।
চিপনার

5

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

একটি সেশন খোলার সময় আপনার .bashrc স্বয়ংক্রিয়ভাবে লোড করতে, এটি। প্রোফাইলে যুক্ত করার চেষ্টা করুন:

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

আপনার সেশনটি আবার খুলুন, এবং এটি আপনার .bashrc এ থাকা কোনও পাথ / স্ক্রিপ্টগুলি লোড করা উচিত।


আমার কাছে এটি "। প্রোফাইলে" আছে তবে এটি কাজ করছে না - প্রতিবার যখন আমি বেরিয়ে আসি, আমাকে হাতে হাতে এটি করতে হবে। কোন পরামর্শ?
ওয়েইন স্মলম্যান

4

আমি আমার ভল্টর ক্লাউড ভিত্তিক সার্ভার সেট আপ করতে ইজেজেঞ্জিন ব্যবহার করেছি।
আমি আমার বাশ ফাইলটি এখানে পেয়েছি /etc/bash.bashrc

তাই source /etc/bash.bashrcআমার জন্য কৌশলটি!

হালনাগাদ

খালি সার্ভার সেট আপ করার সময় (উবুন্টু ১.0.০৪) আপনি যখন উপরের নাম ব্যবহার না করে এবং রুট দিয়ে লগ ইন করছেন তখন উপরের তথ্যটি ব্যবহার করতে পারেন।

কোনও ব্যবহারকারী তৈরি করা (সুডো প্রাইভেলিজ সহ) তৈরি করা ভাল, এবং পরিবর্তে এই ব্যবহারকারীর নাম হিসাবে লগইন করুন।
এটি আপনার সেটিংসের জন্য। প্রোফাইল এবং .bashrc ফাইলগুলি সহ একটি ডিরেক্টরি তৈরি করবে।
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/

এখন, আপনি সম্পাদনা করবেন এবং (এবং "উত্স") ~/.bashrc ফাইলটি ।

আমার সার্ভারে, এটি অবস্থিত ছিল /home/your_username/.bashrc
( your_usernameআপনি উপরে তৈরি নতুন ব্যবহারকারীর নামটি আসলে কোথায় এবং এখন দিয়ে লগইন করুন)


4

এক্সিকিউ বাশ স্রোত প্রতিস্থাপনের জন্য একটি নতুন শেল পুনরায় সম্পাদন এবং চালু করার একটি দুর্দান্ত উপায়। কেবলমাত্র উত্তরটি যুক্ত করতে, EL শেলটি বর্তমান শেলটি প্রদান করে যা বাশ। নিম্নলিখিত ব্যবহার করে, এটি বর্তমান শেলটি পুনরায় লোড করবে এবং কেবল বাশকে নয়।

exec $SHELL -l;


3

আমার যখন আমি PATH পরিবর্তন করি তখন কী কাজ করে তা হ'ল: exec "$BASH" --login


প্রশ্নটি পুনরায় লোডিং সম্পর্কে ~/.bashrc, যা (সরাসরি) পুনরায় লোড --loginকরবে না ; ব্যবহারকারীর স্তরে এটি পরিবর্তে ~/.bash_profile( ~/.bash_loginবা ~/.profile) পুনরায় লোড করবে ।
mklement0

3

টাইপ করুন:

source ~/.bashrc

বা, সংক্ষিপ্ত আকারে:

. ~/.bashrc


1
আবার, কেবলমাত্র যদি আপনি হোম ডিরেক্টরিতে থাকেন বা আরও সুনির্দিষ্টভাবে যেখানে ডিরেক্টরিটি .bashrcঅবস্থিত সেখানে কাজ করে। এটি করার আরও একটি সঠিক উপায়, যেমন গৃহীত উত্তরে বলা হয়েছে, তা source ~/.bashrc
জন রেড

2

আমি msysgit এ নিম্নলিখিত কমান্ডটি ব্যবহার করি

. ~/.bashrc

এর সংক্ষিপ্ত সংস্করণ

source ~/.bashrc

@jwg- এর গৃহীত উত্তর হ'ল। .বাশক্র। আপনি যদি msysgit- এ হোম ডিরেক্টরিতে থাকেন কেবল তখনই কাজ করবে।
সোজন ভি জোসে

@ jwg ঠিক আছে আমি উল্লেখ করছিলাম যে আপনার পরিবর্তে 'উত্স ~ / .bashrc' টাইপ করতে হবে না sh
সোজন ভি জোসে

@jwg ঠিক আছে আমি এটিকে মূল উত্তরে সম্পাদনা হিসাবে যুক্ত করেছি :)
সোজন ভি জোসে

নিরর্থক উত্তর @ সোজন কেন?
nitinr708

@ nitinr708 2014। আমি সবে মনে আছে: পি। মূল উত্তরটি আমার অনুমানের পরে সম্পাদিত হয়েছিল।
সোজন ভি জোসে

2

একটি ইন্টারেক্টিভ শেল অনুমান করে, এবং আপনি আপনার বর্তমান কমান্ডের ইতিহাস এবং / ইত্যাদি / প্রোফাইলও লোড করতে চান (যা /etc/paths.d/ এর মাধ্যমে সংজ্ঞায়িত ম্যাক ওএস এক্স লোড পাথগুলিতে পরিবেশের ডেটা লোড করে) পাথ_হেল্পার), আপনার কমান্ডের ইতিহাস যুক্ত করুন এবং লগইন ('-l') বিকল্পের সাহায্যে বাশের একটি এক্সিকিউট করুন:

history -a && exec bash -l

1

এটিও কাজ করবে ..

cd ~
source .bashrc

7
এটি করে, তবে এটি ওয়ার্কিং ডিরেক্টরিকে ~ এ পরিবর্তন করে, যা চায়নি।
আলবিন

1
প্রসঙ্গটি বেঁচে থাকার জন্য আপনাকে ধন্যবাদ ক্রিঙ্কল
nitinr708

~ওয়ার্কিং ডিরেক্টরিটি ব্যবহারকারীর হোম ডিরেক্টরিতে পরিবর্তন করার জন্য নির্দিষ্ট করা দরকার?
কেনলি

1

আমি লক্ষ্য করেছি যে খাঁটি exec bashকমান্ড পরিবেশের ভেরিয়েবল সংরক্ষণ করবে, সুতরাং আপনার ব্যবহারের প্রয়োজনexec -c bash খালি পরিবেশে বাশ চালানোর করা উচিত।

উদাহরণস্বরূপ, আপনি একটি ব্যাশ লগইন করেন এবং export A=1আপনি যদি exec bashহন A == 1

আপনি যদি exec -cl bash, Aখালি।

আমি মনে করি এটি আপনার কাজটি করার সবচেয়ে ভাল উপায়।


-2

আমি ব্যক্তিগতভাবে আছে

alias ..='source ~/.bashrc'

আমার বাশার্কে, যাতে আমি এটি পুনরায় লোড করার জন্য ".." ব্যবহার করতে পারি।


4
অনেক লোকের জন্য ..একটি নাম হিসাবে ব্যবহার করে cd .., তাই এটি খুব বিভ্রান্তিকর হবে।
গডফাদার

উপনামের নাম বাদে একটি ভাল ধারণা। alias rehash='source ~/.bashrc'আমার পছন্দ
ফ্রাঙ্ক নোক্কে

"_rs" এর মতো কিছু ব্যবহার করুন যা আমি পুনরায় লোড শেল হিসাবে ব্যবহার করি। আমি আমার এলিয়াস শুরু করার জন্য বেশ ব্যবহার করি; যা js libs আন্ডারস্কোর বা লোডাশের মতো।
জিমি এমজি লিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.