উত্তর:
.bashrcইন্টারফেসটিভভাবে যখনই এটি শুরু হয় তখন বাশ চালিত একটি শেল স্ক্রিপ্ট । এটি একটি ইন্টারেক্টিভ শেল সেশনটি আরম্ভ করে। আপনি সেই ফাইলটিতে যে কোনও কমান্ড রাখতে পারেন যা আপনি কমান্ড প্রম্পটে টাইপ করতে পারেন।
আপনার নির্দিষ্ট পরিবেশে শেল সেট আপ করতে বা জিনিসগুলিকে আপনার পছন্দগুলিতে কাস্টমাইজ করতে আপনি এখানে কমান্ডগুলি রেখেছেন। একটি সাধারণ জিনিস রাখতে হবে যা আপনি সর্বদা উপলব্ধ থাকতে চান .bashrcএমন উপাধি ।
.bashrcউপর সঞ্চালিত হয় যে ইন্টারেক্টিভ শেল চালু করুন। যদি তুমি বল:
$ bash ; bash ; bash
এবং তারপরে Ctrl-Dতিনবার আঘাত করুন, তিনবার .bashrcচলবে। তবে আপনি যদি এটির পরিবর্তে বলেন:
$ bash -c exit ; bash -c exit ; bash -c exit
তবে .bashrcমোটেই চলবে না, যেহেতু -cবাশ কলটি অ-ইন্টারেক্টিভ করে। আপনি যখন কোনও ফাইল থেকে শেল স্ক্রিপ্টটি চালান তখন একই কথা সত্য।
বিপরীতে .bash_profileএবং .profileযা কেবলমাত্র একটি নতুন লগইন শেলের শুরুতে চালিত হয়। ( bash -l) আপনি একবার নির্বাচন করতে চান বা প্রতিটি ইন্টারেক্টিভ শেল শুরু করতে চান কিনা তার উপর নির্ভর করে কোনও কমান্ড .bashrcবনাম চলে কিনা তা আপনি চয়ন করেন .bash_profile।
এলিয়াসগুলির একটি কাউন্টারেরেক্সাম হিসাবে, যা আমি রাখতে পছন্দ করি .bashrc, আপনি পরিবর্তে এটি PATHসামঞ্জস্য করতে চান .bash_profile, যেহেতু এই পরিবর্তনগুলি সাধারণত আদর্শহীন নয় :
export PATH="$PATH:/some/addition"
যদি আপনি .bashrcএটির পরিবর্তে রাখেন , প্রতিবার আপনি যখন একটি ইন্টারেক্টিভ সাব-শেল চালু করলেন, :/some/additionতখন PATHআবার শেষের দিকে টেক করা হবে , যখন আপনি কোনও কমান্ড ভুল টাইপ করবেন তখন শেলের জন্য অতিরিক্ত কাজ তৈরি করবে।
যখনই আপনি আপনার জন্য একটি নতুন ইন্টারেক্টিভ ব্যাশ শেল পেতে আউট শেলvi সঙ্গে :shউদাহরণস্বরূপ,।
.bashrc । এটি কখনও কখনও অপ্রত্যাশিত আচরণের দিকে পরিচালিত করতে পারে । স্বাভাবিক কর্মসংস্থানটি উত্স .bashrcথেকে .profileবা এর .bash_profileপরিবর্তে হয় to
.bashrcঅন্যান্য শেলগুলি ব্যবহারের উদ্দেশ্যে নয়, তাই এটি থেকে উত্সাহিত না করাই ভাল .profile(যা অন্য bashশেলগুলি ব্যবহার করতে পারে )।
source ~/.bashrcবা . ~/.bashrcবা [[ -f ~/.bashrc ]] && source. ~/.bashrcবা [ -f ~/.bashrc ] && source ~/.bashrcকাজ করে না?
.bashrcপ্রকৃতপক্ষে sourced হয় (থেকে সুপারিশ করা কমান্ড ব্যবহার করে superuser.com/a/183980/128768 )। সমস্যা আমি মুখোমুখি আসলে না গুন হল https://github.com/junegunn/fzfএই কমান্ড ভিতরে মাধ্যমে .bashrc: source ~/.fzf.bash। আমি একটি নতুন টার্মিনাল চালু করি, তারপরে Ctrl+ Rএবং আমি পাই `__fzf_history__`bash: fzf: command not found। আমি নিজেই উত্স .bashrcউত্সর্পণ করেছি এবং একই কী শর্টকাটটি আশানুরূপে fzf প্রবর্তন করে। শোরগোলের জন্য এখানে দুঃখিত।
একটি .bashrcফাইলের উদ্দেশ্য হ'ল এমন একটি স্থান সরবরাহ করা যেখানে আপনি ভেরিয়েবল, ফাংশন এবং উপকরণ সেট আপ করতে পারেন, আপনার (পিএস 1) প্রম্পটটি সংজ্ঞায়িত করতে পারেন এবং অন্যান্য সেটিংস সংজ্ঞায়িত করতে পারেন যা আপনি প্রতিটি স্টার্ট ব্যবহার করে নতুন টার্মিনাল উইন্ডোটি খুলতে চান।
এটি প্রতিবার আপনি একটি নতুন টার্মিনাল, উইন্ডো বা ফলক খোলার মাধ্যমে পরিচালিত হয়ে কাজ করে।
আপনি এখানে আমার দেখতে পাবেন (সিনট্যাক্স হাইলাইটিংয়ের সাথে পিক করুন) :
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"
ব্যাখ্যা:
-1। সদৃশ উপেক্ষা করতে এবং ডিফল্টের চেয়ে অনেক বড় হতে আমার ইতিহাস ফাইলটি সেট আপ করুন।
-2। lsআপনি লিনাক্স বা ওএসএক্স
-3 ব্যবহার করছেন কিনা তার উপর নির্ভর করে রঙ বিকল্প । " md" কমান্ড
-4 দিয়ে একটি ডিরেক্টরি তৈরি এবং সিডি করতে ফাংশন । গিট রেপো এবং ...
-5 এ থাকলে বর্তমান গিট শাখাটি সন্ধান করুন । -9। 
-১০ হিসাবে একটি দুর্দান্ত পিএস 1 প্রম্পটটি সংজ্ঞায়িত করুন । উন্নত PS2 প্রম্পট
-11। কমান্ড লাইন
-12 এ সম্পাদক হিসাবে vi সেট করুন । ডিফল্ট সম্পাদক হিসাবে vi সেট করুন
-13। আমার .bash_aliasesফাইল উপস্থিত থাকলে এটি
সম্পাদন করুন -14। আমার গিট ট্যাব সমাপ্তির স্ক্রিপ্ট (রিমোট এবং শাখাগুলির জন্য) উপস্থিত থাকলে তা কার্যকর করুন।
-15। অটোজাম্প বিদ্যমান থাকলে এটি চালনা করুন
-16। বাশ সংস্করণ> = 4 থাকলে সিডি অংশটি টাইপ না করে সিডিংয়ের অনুমতি দিন
-17। ব্যাশ সমাপ্তি স্ক্রিপ্টটি উপস্থিত থাকলে এটি প্রয়োগ করুন
-18। টিএমইউএক্স উপস্থিত থাকলে
-19। আমার পথ
-20 এ আরভিএম যুক্ত করুন । আরভিএম থাকলে তা ব্যবহার করুন।
আমি এই পোর্টেবল তৈরি করেছি যাতে এটি আমার কোনও লিনাক্স বা ওএসএক্স মেশিনে কাস্টমাইজেশন ছাড়াই কাজ করে - তাই উপস্থিত ফাংশন এবং অন্যান্য স্ক্রিপ্টগুলি ব্যবহারের আগে উপস্থিতির জন্য বেশ কয়েকটি পরীক্ষা করা হয়।
এটি নতুন টার্মিনাল উইন্ডোটি খোলার ক্ষেত্রে কোনও সমস্যা না থাকলেও নতুন ফাইলটিতে পুরো ফাইলটি তাত্ক্ষণিকভাবে ব্যবহার করা সহজ করে তোলে।
এটি একটি bashকনফিগার ফাইল।
ইন্টারেক্টিভ (অ-লগইন) শেলগুলি, তারপরে এই ফাইলগুলি থেকে কনফিগারেশনটি পড়ে:
$HOME/.bashrcলগইন শেলগুলির জন্য, কনফিগারেশনটি এই ফাইলগুলি থেকে পড়ে:
/etc/profile (সর্বদা উত্সাহিত)$HOME/.bash_profile (এই ফাইলগুলির বাকী ফাইলগুলি যাতে না পাওয়া পর্যন্ত যথাযথভাবে পরীক্ষা করা হয় তবে অন্য কোনওটি পড়া হয় না)$HOME/.bash_login$HOME/.profileনীচের চিত্রটিতে কীভাবে / কখন সেগুলি বোঝানো হয় তার সাধারণ চিত্রণ।
আমি echoআমার .bashrcএবং.bash_profile
দেখতে man bashআরও তথ্যের জন্য
.bashrcএবং এর মধ্যকার পার্থক্যটি পৃথক করে .bashrcএবং .bash_profileযা আপনার উত্তরের বিষয়বস্তুটিকে কভার করে। নিরুৎসাহিত হবেন না, আপনি একটি সৎ প্রচেষ্টা চালিয়ে গেছেন, তবে অন্যান্য উত্তরের সাথে অন্তর্ভুক্ত নয় এমন কিছু বিষয়বস্তু দিয়ে প্রশ্নের উত্তর দেওয়ার দিকে মনোনিবেশ করার চেষ্টা করুন।