যদি আমি এতে পরিবর্তন করি তবে আমি .bashrc
কীভাবে লগ আউট না করে এবং এটিকে আবার লোড করব?
যদি আমি এতে পরিবর্তন করি তবে আমি .bashrc
কীভাবে লগ আউট না করে এবং এটিকে আবার লোড করব?
উত্তর:
আপনাকে কেবল কমান্ডটি প্রবেশ করতে হবে:
source ~/.bashrc
অথবা আপনি কমান্ডটির সংক্ষিপ্ত সংস্করণটি ব্যবহার করতে পারেন:
. ~/.bashrc
alias editbashrc='vim ~/.bashrc; source ~/.bashrc'
। এটি সম্পাদনাটি আরও মসৃণ করে তুলবে, যেহেতু কাস্টম ওরফে ব্যবহার করে সম্পাদনা করার পরে, পুনরায় লোডিং সম্পর্কে আপনার ভাবার দরকার নেই।
অথবা আপনি ব্যবহার করতে পারেন:
exec bash
এটি একই কাজ করে এবং মনে রাখা সহজ (অন্তত আমার জন্য)।
exec
কমান্ড সম্পূর্ণরূপে নির্দিষ্ট কম্যান্ড-লাইন চালিয়ে শেল প্রক্রিয়া প্রতিস্থাপন করে। আমাদের উদাহরণস্বরূপ, এটি বর্তমান শেলটি যা আছে তা নতুন পরিবর্তনের bash
(আপডেট কনফিগারেশন ফাইলগুলির সাথে) প্রতিস্থাপন করে ।
source .bashrc
কমান্ডের পার্থক্য ব্যাখ্যা করতে পারেন এবং exec bash
?
source
একটি অন্তর্নির্মিত শেল কমান্ড যা বর্তমান শেলটিতে আর্গুমেন্ট হিসাবে পাস করা ফাইলের বিষয়বস্তু কার্যকর করে । সুতরাং আপনার উদাহরণে এটি বর্তমান শেলটিতে .bashrc ফাইলটি কার্যকর করে। এবং exec
কমান্ড একটি প্রদত্ত প্রোগ্রামের সাথে শেলটি প্রতিস্থাপন করে, উদাহরণস্বরূপ, এটি আপনার শেলের পরিবর্তে ব্যাশ (আপডেট হওয়া কনফিগারেশন ফাইলগুলির সাহায্যে)
. ~/.bashrc
এর dash
পরিবর্তে কার্যকর করব bash
, সুতরাং shopt
অনুপস্থিত থাকায় একটি ত্রুটি রয়েছে । source
শেল থেকে পাওয়া যায় নি, সুতরাং সমাধানটিও বেরিয়ে আসে। আমি এটি চেষ্টা করেছি এবং ডকারের চিত্রটি নির্বিঘ্নে নির্মিত!
source ~/.bashrc
আপনার পুরো শেল পরিবেশ সংরক্ষণ করবে (যদিও এটি সম্ভবত সোর্সিং দ্বারা সংশোধন করা হয়েছে ~/.bashrc
) exec bash
কেবলমাত্র আপনার বর্তমান শেলের পরিবেশ পরিবর্তনশীলগুলি সংরক্ষণ করবে (শেল ভেরিয়েবল, ফাংশন, বিকল্পগুলি নিখুঁতভাবে বর্তমান শেলটিতে কোনও অ্যাড-হক পরিবর্তন)। আপনার প্রয়োজনের উপর নির্ভর করে এক বা অন্য পদ্ধতির পছন্দ হতে পারে।
exec bash
। exec
কমান্ড প্রতিস্থাপন আমাদের ক্ষেত্রে, ব্যাশ এ, প্রোগ্রামের সাথে শেল। সুতরাং, টার্মিনালে সর্বদা উপস্থিত থাকা বাশের একটি উদাহরণ রয়েছে।
করার পরিপূর্ণ এবং বৈপরীত্যের দুই সবচেয়ে জনপ্রিয় উত্তর, . ~/.bashrc
এবং exec bash
:
উভয় সমাধান কার্যকরভাবে পুনরায় লোড করুন ~/.bashrc
, তবে পার্থক্য রয়েছে:
. ~/.bashrc
বা source ~/.bashrc
হবে আপনার বর্তমান শেল সংরক্ষণ:
~/.bashrc
বর্তমান শেলে ( গুন ) করে তোলে, বর্তমান শেল এবং তার রাষ্ট্র হয় সংরক্ষিত , যা বিভিন্ন পরিবেশের, শেল ভেরিয়েবল, শেল বিকল্প, শেল ফাংশন, এবং কমান্ড ইতিহাস অন্তর্ভুক্ত করা হয়েছে।exec bash
, বা, আরও দৃly়তার সাথে, exec "$BASH"
[1] , আপনার বর্তমান শেলটিকে একটি নতুন উদাহরণের সাথে প্রতিস্থাপন করবে , এবং কেবলমাত্র আপনার বর্তমান শেলের পরিবেশ পরিবর্তনশীলগুলি (আপনি অ্যাড-হককে সংজ্ঞায়িত করেছেন এমনগুলি সহ) সংরক্ষণ করবেন serve
আপনার প্রয়োজনের উপর নির্ভর করে এক বা অন্য পদ্ধতির পছন্দ হতে পারে।
[1] exec bash
তাত্ত্বিকভাবে বর্তমান শেলটি শুরু হওয়া চেয়ে পৃথক bash
এক্সিকিউটেবল কার্যকর করতে পারে , যদি এটি এর আগে তালিকাভুক্ত ডিরেক্টরিতে উপস্থিত থাকে $PATH
। যেহেতু বিশেষ পরিবর্তনশীল $BASH
সর্বদা চলমান শেলটি শুরু করে এমন এক্সিকিউটেবলের পুরো পথ exec "$BASH"
রাখে, একই এক্সিকিউটেবল ব্যবহারের গ্যারান্টিযুক্ত । চারপাশে
একটি নোট : ডাবল-উদ্ধৃতি নিশ্চিত করে যে ভেরিয়েবলের মানটি যেমন ব্যাশ দ্বারা ব্যাখ্যা ছাড়াই ব্যবহার করা হয়; যদি মানটির কোনও এম্বেড স্পেস বা অন্যান্য শেল মেটাচার্যাক্টর না থাকে (যা সম্ভবত এই ক্ষেত্রে হয় না), আপনার কঠোরভাবে ডাবল উদ্ধৃতি দরকার নেই, তবে সেগুলি ব্যবহার করা গঠন করা ভাল অভ্যাস।"..."
$BASH
exec $BASH
উত্স হবে ~/.bashrc
, তাই আপনি নতুন সেশনে শেল পরিবেশে এর পরিবর্তনগুলি দেখতে পাবেন।
কেউ ভুল উত্তর যুক্ত করার জন্য আমার উত্তর সম্পাদনা করেছে, তবে এখানে আসলটি ছিল, যা গৃহীত উত্তরের চেয়ে নিকৃষ্ট।
. .bashrc
~/
, তবে যেহেতু উপরের উত্তরটি উভয়ই দেখাচ্ছে source ~/.bashrc
এবং . ~/.bashrc
আমি ভাবছি যে এই উত্তরটি কেবল অপ্রয়োজনীয় হিসাবে মুছে ফেলা উচিত।
আপনার পরিবেশের উপর নির্ভর করে কেবল টাইপ করা
bash
কাজ করতে পারে।
. ~/.bashrc
source ~/.bashrc
exec bash
exec
কমান্ড শেলটি একটি প্রদত্ত প্রোগ্রামের সাথে প্রতিস্থাপন করে ... - হুসইআইএন
exec bash
এখনও বর্তমান শেলের পরিবেশ উত্তরাধিকার সূত্রে প্রাপ্ত। exec env -i bash
কাছাকাছি হবে (বা exec env -i bash -l
আপনি যদি বর্তমানে লগইন শেলটিতে থাকেন)।
আপনার পরিবেশের উপর নির্ভর করে আপনি যখন কোনও এসএসএইচ অধিবেশন খুলবেন তখন আপনি স্বয়ংক্রিয়ভাবে .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 এ থাকা কোনও পাথ / স্ক্রিপ্টগুলি লোড করা উচিত।
আমি আমার ভল্টর ক্লাউড ভিত্তিক সার্ভার সেট আপ করতে ইজেজেঞ্জিন ব্যবহার করেছি।
আমি আমার বাশ ফাইলটি এখানে পেয়েছি /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
আপনি উপরে তৈরি নতুন ব্যবহারকারীর নামটি আসলে কোথায় এবং এখন দিয়ে লগইন করুন)
এক্সিকিউ বাশ স্রোত প্রতিস্থাপনের জন্য একটি নতুন শেল পুনরায় সম্পাদন এবং চালু করার একটি দুর্দান্ত উপায়। কেবলমাত্র উত্তরটি যুক্ত করতে, EL শেলটি বর্তমান শেলটি প্রদান করে যা বাশ। নিম্নলিখিত ব্যবহার করে, এটি বর্তমান শেলটি পুনরায় লোড করবে এবং কেবল বাশকে নয়।
exec $SHELL -l;
আমার যখন আমি PATH পরিবর্তন করি তখন কী কাজ করে তা হ'ল: exec "$BASH" --login
~/.bashrc
, যা (সরাসরি) পুনরায় লোড --login
করবে না ; ব্যবহারকারীর স্তরে এটি পরিবর্তে ~/.bash_profile
( ~/.bash_login
বা ~/.profile
) পুনরায় লোড করবে ।
আমি msysgit এ নিম্নলিখিত কমান্ডটি ব্যবহার করি
. ~/.bashrc
এর সংক্ষিপ্ত সংস্করণ
source ~/.bashrc
একটি ইন্টারেক্টিভ শেল অনুমান করে, এবং আপনি আপনার বর্তমান কমান্ডের ইতিহাস এবং / ইত্যাদি / প্রোফাইলও লোড করতে চান (যা /etc/paths.d/ এর মাধ্যমে সংজ্ঞায়িত ম্যাক ওএস এক্স লোড পাথগুলিতে পরিবেশের ডেটা লোড করে) পাথ_হেল্পার), আপনার কমান্ডের ইতিহাস যুক্ত করুন এবং লগইন ('-l') বিকল্পের সাহায্যে বাশের একটি এক্সিকিউট করুন:
history -a && exec bash -l
আমি লক্ষ্য করেছি যে খাঁটি exec bash
কমান্ড পরিবেশের ভেরিয়েবল সংরক্ষণ করবে, সুতরাং আপনার ব্যবহারের প্রয়োজনexec -c bash
খালি পরিবেশে বাশ চালানোর করা উচিত।
উদাহরণস্বরূপ, আপনি একটি ব্যাশ লগইন করেন এবং export A=1
আপনি যদি exec bash
হন A == 1
।
আপনি যদি exec -cl bash
, A
খালি।
আমি মনে করি এটি আপনার কাজটি করার সবচেয়ে ভাল উপায়।
আমি ব্যক্তিগতভাবে আছে
alias ..='source ~/.bashrc'
আমার বাশার্কে, যাতে আমি এটি পুনরায় লোড করার জন্য ".." ব্যবহার করতে পারি।
..
একটি নাম হিসাবে ব্যবহার করে cd ..
, তাই এটি খুব বিভ্রান্তিকর হবে।
alias rehash='source ~/.bashrc'
আমার পছন্দ
export PATH=$PATH:foo
এবং তারপরে আপনি এটিকে পরিবর্তন করেনexport PATH=$PATH:bar
। আপনি লগ ইন করুন এবং আউট ব্যাক, শুধুমাত্রbar
পাথ হতে হবে, কিন্তু আপনি কি পরামর্শ যদি আপনি না, উভয়foo
এবংbar
পাথ মধ্যে হতে হবে। আপনি কি এই কাছাকাছি উপায় জানেন?