লোকাল কনভেনশনের কারণে বাশার্ক থেকে অন্য উপায়ের পরিবর্তে বাশ_প্রোফাইল উত্স উত্স ।
একজন যেভাবে তাদের স্টার্টআপ ফাইলগুলি কনফিগার করে সে সম্পর্কে আমি যে সমস্ত মতামত পড়েছি bash
তা মূলত স্থানীয় সম্মেলনের উপর ভিত্তি করে। স্থানীয় কনভেনশন সাধারণত বড় চিত্রটির উল্লেখ করে না যে এটি লগ-ইন, অ-ইন্টারেক্টিভ ক্ষেত্রে সম্পর্কে বেশি কথা বলে না। মজার বিষয়টি হ'ল, এবং আমি সন্ধান করেছি, তবে আমি খুব কমই কাউকেই দেখতে পাই যে cron
কেন তারা একটি স্টার্টআপ ফাইলের মধ্যে অন্যটির পরিবর্তে ভেরিয়েবল রাখবে সে সম্পর্কে তাদের সমস্ত আলোচনায় উল্লেখ রয়েছে। আসলে, আমি একটি মন্তব্য বলতে শুনিনি: " / বিন / শ একটি কারণ রয়েছে Bash বাশ মূল বোর্ন শেলটি, / বিন / শ অনুকরণ করে, যখন এটির জন্য অনুরোধ করা হয়েছিল" "একটি জিনিসের জন্য, এবং আমি কিছুটা খনন করি, এই কেসটি তাদের পক্ষে গুরুত্বপূর্ণ যারা শেলটি কেবল ইন্টারেক্টিভভাবেই কাজ করেন না, যারা অ ইন্টারেক্টিভ সরবরাহ করেন,ব্যাকগ্রাউন্ড ) cron
যে স্ক্রিপ্টগুলিতে ন্যূনতম শেল প্রসেসিং প্রয়োজন হয় অর্থাৎ ব্যাকগ্রাউন্ড প্রসেসিংয়ের জন্য রঙিন প্রম্পট, কমান্ডের ইতিহাস এবং প্রতিস্থাপন, একটি সঠিকভাবে সংজ্ঞায়িত $ TERM ভেরিয়েবল ইত্যাদি প্রয়োজন হয় না require
আরও এবং সম্মানের সাথে cron
, আমি সাধারণত যা দেখি তা হ'ল লোকেরা ন্যূনতম অনুসন্ধানের পথ তৈরি করে বা প্রোগ্রামগুলিকে পুরোপুরি দক্ষ করে তোলা, এবং কাজ করার সময় টার্মিনালের সাথে সংযুক্ত না হওয়া আউটপুটকে কীভাবে মোকাবেলা করতে হয় তা না জেনে না (যেমন অ-ইন্টারেক্টিভ, লগ-ইন bash
বা sh
কেস) কাজ করে না তাদের cron
স্ক্রিপ্ট সহ। এটি সাধারণত কারণ শেল স্টার্টআপ ক্রমটি সম্পর্কে ভাল বোঝা সম্পূর্ণরূপে বোঝা যায় না, যা কোনও ব্যবহারকারী নিজের স্টার্টআপ ফাইলগুলি এমনভাবে প্রয়োগ করে যা স্থানীয় /etc
স্টার্টআপ ফাইলগুলিতে ইতিমধ্যে প্রতিষ্ঠিত কনভেনশনগুলির সাথে বেমানান বা অসংলগ্ন ।
বিশদ বিবরণে, স্থানীয় কনভেনশন দ্বারা সম্পন্ন সেটআপটি সেই নির্দিষ্ট ইনস্টলেশন এবং শেলের /etc
ফাইলগুলির মধ্যে রাখা আছে। যদি কেউ কোনও ইউনিক্স ইনস্টলেশনের /etc
ফাইলগুলি পরীক্ষা করে থাকে, যেগুলি একটি সাধারণ bash
স্টার্টআপ ক্রমের অংশ হিসাবে আহ্বান করা হয় , তবে সেই /etc
স্টার্টআপ ফাইলগুলিতে প্রতিষ্ঠিত কনভেনশনটির প্রশংসনীয় একটি পদ্ধতিতে তাদের নিজস্ব স্টার্ট-আপ তৈরি করা উচিত ।
লিনাক্স ডকুমেন্টেশন প্রকল্পে বলা হয়েছে:
/ ইত্যাদি / স্কেল / প্রতিটি নতুন ব্যবহারকারীর জন্য ডিফল্ট ফাইলগুলি এই ডিরেক্টরিতে সঞ্চিত থাকে। প্রতিবার নতুন ব্যবহারকারী যুক্ত হওয়ার সাথে সাথে এই কঙ্কাল ফাইলগুলি তাদের হোম ডিরেক্টরিতে অনুলিপি করা হয়। একটি গড় সিস্টেমে থাকতে পারে: .alias, .bash_profile, .bashrc এবং .cshrc ফাইল। অন্যান্য ফাইলগুলি সিস্টেম প্রশাসকের হাতে ছেড়ে যায়।
যদিও bash
ম্যানুয়ালটিতে এই ফাইলগুলি সাধারণত /etc/skel
ডিরেক্টরিতে পাওয়া যায় তা আমি স্পষ্টভাবে উল্লেখ করি না , সানোস, সোলারিস, রেডহ্যাট, উবুন্টু, এইচপি-ইউএক্স, ইউমিপস এবং আল্ট্রিক্সের /etc/skel
পরে কোনও ব্যবহারকারীর শেল স্টার্টআপ ফাইলগুলির নকশার জন্য ফাইল রয়েছে। ওএসএক্স স্পষ্টভাবে তা করে না - আমি এখনই ওএসএক্স 10.9.1 ব্যবহার করছি। দুর্ভাগ্যক্রমে, ওএসএক্স আপনাকে কনভেনশনের ক্ষেত্রে কীভাবে সেটআপ করা উচিত তার দিক দিয়ে এগিয়ে যাওয়ার তেমন কিছু দেয় না, তবে ওএসএক্স যেহেতু বিএসডি ডেরিভেটিভ, আমি কেবল অন্য একটি বিএসডি ডেরিভেটিভ ব্যবহার করেছি, এবং তার পরে আমার নিজস্ব bash
স্টার্টআপ ক্রমটি বিন্যাস করেছি, সামঞ্জস্য করছি এটি ওএসএক্স 10.9.1 /etc
স্টার্টআপ ফাইলগুলিতে ব্যবহৃত স্থানীয় কনভেনশনগুলির সাথে ফিট করে fit
একটি গুরুত্বপূর্ণ পয়েন্ট যা সমান্তরাল মন্তব্যে উল্লেখ করা হয়েছিল তা হ'ল ওএসএক্সের জন্য, কনভেনশনটি প্রতিটি নতুন টার্মিনালটিকে ইন্টারেক্টিভ লগইন শেল হিসাবে শুরু করবে। এটি আসলে ওএসএক্সে ডিফল্ট। যতক্ষণ না কোনও ইনস্টলেশনের ব্যবহারকারী ধারাবাহিক থাকে এই কনভেনশনটিতে কোনও সমস্যা নেই। ওএসএক্স-এ টার্মিনালের জন্য ডিফল্ট আচরণটি অন্যান্য ইউএনআইএক্স বিতরণের শেল স্টার্টআপ কনভেনশনগুলির সাথে সামঞ্জস্য করার জন্য টার্মিনালের পছন্দগুলিতে , বিশেষত, কমান্ডটি Shells open with:
প্রকাশের জন্য , সেটিংস পরিবর্তন করে পরিবর্তন করা যেতে পারে /usr/bin/login -f -l whmcclos bash -i
:
ব্যাকগ্রাউন্ড বা ভূমিকা হিসাবে যা কিছু আছে তার সাথে আমি নিজের সেরা পরামর্শটি সার্থক করব for
আমার সেরা পরামর্শ:
আপনার ইউনিক্স বিতরণের প্রশাসকরা যে ফাইলগুলি রেখেছেন সেগুলি পরীক্ষা করুন। নিম্নলিখিত অবস্থানগুলি উপস্থিত থাকলে তাদের সাথে শুরু করুন। ls -a
কমান্ডটি ব্যবহার করতে ভুলবেন না , কারণ কিছু ফাইল ডট দিয়ে শুরু হয়। প্রারম্ভকালে এই ফাইলগুলি কীভাবে ব্যবহৃত হয় তা দেখুন এবং আপনার নিজের স্টার্টআপ ফাইলগুলি কীভাবে তাদের সাথে যোগাযোগ করে তা দেখুন:
/etc/bashrc
/etc/profile
/etc/skel/.bash_logout
/etc/skel/.bashrc
/etc/bash.bashrc
/etc/bash_completion
অনুরোধ bash
এবং প্রারম্ভিক ক্রমের জন্য ম্যানুয়ালটিতে দেখুন । এটি সব খুব ভাল স্থাপন করা হয়।
একটি ক্যাভিয়েট হিসাবে সমস্ত - এখানে আমি কীভাবে আমার ওএসএক্স ১০.৯.১ ইনস্টলেশনের কাজগুলি করেছি - অন্যান্য ইউনিক্স বিতরণগুলি আলাদা হবে তবে নীচে যেটি উপস্থাপন করা হয়েছে তাতে সমস্ত ইউএনআইএক্স বিতরণ না হলে সবচেয়ে বেশি কাজ করা উচিত, তবে অন্যান্য ইউনিক্স বিতরণগুলি ব্যবহার করুন ' আপনার নিজস্ব উদ্দেশ্যে নীচে দরজার গাইড হিসাবে কনভেনশন:
.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists. Note, however, that we will have a ~/.bash_profile and it
# will simply source this file as a matter of course.
# See /usr/share/doc/bash/examples/startup-files for examples.
# The files are located in the bash-doc package.
# From here on out, I basically set up my PATH, LD_LIBRARY_PATH, and anything else I'd like
# global to running programs and how those programs find their libraries. This is shared by
# `cron`, so we really don't want interactive stuff, here. Also, I setup my environments
# for brew, macports, and fink here, essentially with setting PATH, and invocation of those
# package initialization file as in:
# Brew and locally compiled stuff:
export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/sbin:$PATH
# The following line puts gnu utilities without the prefix "g" in the path
# i.e. tar/gtar:
export PATH=$PATH:/usr/local/Cellar/coreutils/8.21/libexec/gnubin
# MacPorts shoves stuff in /opt, so to get at that stuff...
export PATH=/opt/local/bin:$PATH
export PATH=/opt/local/sbin:$PATH
# Set up for using Fink, which lives in /sw:
[ -e /sw/bin/init.sh ] && . /sw/bin/init.sh
# My stuff:
export PATH=~/perl:$PATH
export PATH=~/bin:$PATH
export PATH=.:$PATH
.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# From here on out, I put in things that are meaningful to interactive shells, like aliases,
# `shopt` invocations, HISTORY control, terminal characteristics, PROMPT, etc.
.bash_profile
# ~/.bash_profile: executed by the command interpreter for login shells.
# Because of this file's existence, neither ~/.bash_login nor ~/.profile
# will be sourced.
# See /usr/share/doc/bash/examples/startup-files for examples.
# The files are located in the bash-doc package.
# Because ~/.profile isn't invoked if this files exists,
# we must source ~/.profile to get its settings:
if [ -r ~/.profile ]; then . ~/.profile; fi
# The following sources ~/.bashrc in the interactive login case,
# because .bashrc isn't sourced for interactive login shells:
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
# I'm still trying to wrap my head about what to put here. A suggestion
# would be to put all the `bash` prompt coloring sequence functions as
# described on http://brettterpstra.com/2009/11/17/my-new-favorite-bash-prompt/
সুতরাং এটি আমার দুটি সেন্ট। মনে রাখবেন যে আমার উদাহরণগুলি স্টার্টআপ ফাইলগুলির মাধ্যমে নিয়ন্ত্রণের পথটি দেখানোর চেষ্টা করেছে এবং কোনও নির্দিষ্ট সাইটের সম্মেলনগুলি কী চাপিয়ে দিতে পারে তা এড়াতে চেষ্টা করেছে।