সমস্ত শাঁস দ্বারা পড়া ".Bashrc" সমতুল্য ফাইল আছে?


105

কি ~/.bashrc ব্যবহারকারী নির্দিষ্ট এনভায়রনমেন্ট ভেরিয়েবল, উপনাম, পরিবর্তন উল্লেখ করার একমাত্র জায়গা PATH, ইত্যাদি পরিবর্তনশীল?

আমি জিজ্ঞাসা করেছি কারণ ~/.bashrcমনে হয় এটি bashকেবলমাত্র একা বলে মনে হয় তবে অন্য শেলগুলিও খুব অস্তিত্বহীন ...

উত্তর:


93

ফাইলটি $HOME/.profileব্যাশ, শ, ড্যাশ এবং সম্ভবত অন্যদের সহ বেশ কয়েকটি শেল ব্যবহার করে।

বাশ ম্যান পৃষ্ঠা থেকে:

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

csh এবং tcsh স্পষ্টভাবে তাকান না ~/.profileকিন্তু সেই শাঁসগুলি দারুণ পুরানো।


7
ডিফল্ট হিসাবে Zsh। প্রোফাইল পড়েন না। এজন্য আমি আমার পূর্ববর্তী উত্তরটি মুছে দিয়েছি। Zsh কেবলমাত্র প্রফাইলে পড়ে যখন এটি sh নামক একটি প্রতীকী লিঙ্কটি দ্বারা ডাকা হয়।
fschmitt

10
tcsh এখনও কিছু পরিবেশে জনপ্রিয়।
ম্যাকিয়েজ পাইচোটকা

1
fschmitt: সংশোধন করার জন্য ধন্যবাদ; স্থির করেছি। ম্যাকিয়েজ পাইচোটকা: আমার সন্দেহ নেই যে এটি সত্য; তবে * আরসি স্ক্রিপ্টগুলি তৈরি করাও সম্ভব (যা তাদের অধীনে চলমান শেলের উপর ভিত্তি করে নির্দিষ্ট অন্যান্য আরসি স্ক্রিপ্টগুলি আমদানি করে)।
এমএসডব্লিউ

1
এই ভাবে কাজ করার জন্য, ব্যবহারকারীদের প্রতিটি শেলটি লগইন শেল তা নিশ্চিত করা দরকার। উদাহরণস্বরূপ, জিনোম টার্মিনালে, প্রোফাইল -> শিরোনাম এবং কমান্ডে যান এবং সক্ষম করুন Run command as a login shell। আপনি এটি সরানোর ~/.bash_profile, বা এটি উত্স তৈরি করতে হবে ~/.profile
মাইকেল

@fschmitt আপনি নিজের Zsh এর $HOME/.profileভিতর থেকেও উত্স তৈরি করতে পারেন .zshrc। আমি আমার সমস্ত পোর্টেবল শেল জিনিসগুলিতে রাখার ঝোঁক রাখি .profileএবং তারপরে আমি এটি যে কোনও পরিবেশের মধ্যে ভাগ করে নিতে পারি around
বেনিয়ামিন আর

56

~/.profileপরিবেশের পরিবর্তনশীল সংজ্ঞাগুলির জন্য এবং লগ-ইন করার সময় আপনি চালাতে চান এমন গ্রাফিকাল প্রোগ্রামগুলির জন্য সঠিক জায়গা (যেমন ssh-agent, screen -m)। এটি আপনার লগইন শেল দ্বারা কার্যকর করা হয় যদি তা বোর্ন-স্টাইলের শেল (sh, ksh, bash) হয়। Zsh ~/.zprofileপরিবর্তে চলে, এবং Csh এবং tcsh রান ~/.login

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

~/.bashrcব্যাশ-নির্দিষ্ট সেটিংসের জন্য সঠিক জায়গা, যেমন এলিয়াস, ফাংশন, শেল বিকল্প এবং প্রম্পট। নামটি ইঙ্গিত করে, এটি ব্যাশের জন্য নির্দিষ্ট; csh আছে ~/.cshrc, ksh আছে ~/.kshrc, এবং zsh এর <ড্রামল> রয়েছে ~/.zshrc

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


ভুলবেন না zsh এছাড়াও আছে .zloginউপরন্তু করার জন্য .zprofileযা রান পর .zshrc (কিন্তু শুধুমাত্র লগ-ইন শেল জন্য)। দেখুন ZSH প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
Geeb

21

কোনও সাধারণ ফাইল নেই, তবে আপনি প্রতিটি শেল একটি সাধারণ ফাইল থেকে পঠন করতে পারেন।

  1. bashথেকে পড়া .bash_profileবা.bashrc
  2. zshথেকে পড়া .zprofile এবং .zshrc
  3. kshথেকে পড়া .profileবা$ENV

তাই আমি এখানে যা করছি:

~/.env

# Put environment variables here, e.g.
PATH=$PATH:$HOME/bin

~/.shrc

test -f "$HOME/.env" && . "$HOME/.env"

# Put interactive shell setup here, e.g.
alias ll='ls -l'
PS1='$PWD$ '
set -o emacs

~/.bashrc

test -f ~/.shrc && source ~/.shrc

# Put any bash-specific settings here, e.g.
HISTFILE=~/.bash_history
shopt -s extglob
IGNOREEOF=yes

~/.zshenv

# Put any zsh-specific settings for non-interactive and interactive sessions, e.g.
setopt braceexpand
setopt promptsubst
setopt shwordsplit

~/.zshrc

test -f ~/.shrc && source ~/.shrc

# Put any zsh-specific interactive settings here, e.g.
HISTFILE=~/.zsh_history
setopt ignoreeof

~/.profile

# Interactive sub-shells source .env, unless this is bash or zsh,
# because they already sourced .env in .bashrc or .zshrc.
if test -z "$BASH_VERSION" -a -z "$ZSH_VERSION" || test -n "$BASH_VERSION" -a \( "${BASH##*/}" = "sh" \)
then
    test -f "$HOME"/.env && . "$HOME"/.env
fi

# The name is confusing, but $ENV is ksh's config file for interactive sessions,
# so it's equivalent to .bashrc or .zshrc.
# Putting this here makes running an interactive ksh from any login shell work.
test -f "$HOME"/.shrc && export ENV="$HOME"/.shrc

# Put any login shell specific commands here, e.g.
ssh-add
stty -ixon

~/.bash_profile

source ~/.bashrc
source ~/.profile

~/.zlogin

# zsh sources .zshrc automatically, only need to source .profile
source ~/.profile

~/.zprofile

(empty)

আপনার যদি সিস্টেমে রুট অ্যাক্সেস থাকে তবে অন্য একটি উপায় সেট আপ করা pam_env

তুমি রাখতে পারো

session optional pam_env.so user_envfile=.env

প্রাসঙ্গিক /etc/pam.dফাইলে (যেমন দেবিয়ান- /etc/pam.d/common-sessionতে), এবং তারপরে ব্যবহারকারী যখন লগ ইন করে, PAMসেখান থেকে পরিবেশের ভেরিয়েবলগুলি পড়বে ~/.env

নোট করুন যে pam_envমূলত শুধুমাত্র VAR=valueএন্ট্রিগুলিকে সমর্থন করে ।

অধিক তথ্য:


14

বিভিন্ন শেলের জন্য পরিবেশ কনফিগারেশন ফাইলের মতো কোনও জিনিস নেই, কারণ এটি এমনকি শেলটি কীভাবে সংজ্ঞায়িত করা হয় তা নির্দিষ্ট করে।

Csh এ আপনি ব্যাশে ব্যবহার setenvকরেন আপনি exportসেগুলি সংজ্ঞায়িত করতে ব্যবহার করেন।

যাইহোক আপনি নিজের কনফিগারেশন ফাইলটি লিখতে এবং এটি sourceআপনার শেলের ডটফাইলে অন্তর্ভুক্ত করতে পারেন ।

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