দীর্ঘ $ PATH সম্পাদনার আরও আরামদায়ক উপায়?


35

আমি আমার AT PATH- তে কয়েকটি ডিরেক্টরি ~ / .bashrc এ যুক্ত করতে চাই।

আমার $ PATH বেশ দীর্ঘ তাই এটিতে কোন ডিরেক্টরি রয়েছে এবং কোন ক্রমে এটি দেখতে কিছুটা শক্ত।

আমি জানি যে আমি আমার। / .Bashrc হতে এটি পরিবর্তন করতে পারি:

PATH=$PATH:/some/dir
PATH=$PATH:/another/dir:/yet/another
PATH=$PATH:/and/another
...

এটি পড়া সহজ করে তুলতে চাই। তবে আমি ভাবছিলাম যে গত কয়েক বছরে বাশ কিছু সিনট্যাক্স অর্জন করেছে যা একটি দীর্ঘ PATH নির্দিষ্টকরণ সহজ করে তোলে। উদাহরণস্বরূপ, আমি অনুরূপ একটি সিনট্যাক্স সম্পর্কে কল্পনা করছি:

PATH=:((
  /some/dir
  /another/dir
  /yet/another
  /and/another
  ...
))

আমি জানি যে এ জাতীয় বাক্য গঠনটি অবৈধ। আমি ভাবছিলাম যে এত সহজ কিছু আছে কিনা। আছে?


ঐতিহ্যগত টিউটোরিয়াল পথ মাধ্যমে সেট করতে PATH=foo:$PATHভুল বলে মনে হয় কারণ এটি বৃদ্ধি প্রত্যেক সময় রাখা source ~/.bashrcএবং এমনকি exec bashসাহায্যের যেহেতু পারব না $PATHহয় export

উত্তর:


25

আমি কোনও ভেরিয়েবলের পাথ প্রেন্ডিং বা সংযোজন করার জন্য সুবিধার ফাংশনগুলির একটি সেট ব্যবহার করি। ফাংশনগুলি "প্যাথফঙ্কস" নামে একটি অবদানকারী ফাইলে বাশের জন্য বিতরণ টারবলে আসে।

  • add_path PATH ভেরিয়েবলের শেষে এন্ট্রি যুক্ত করবে
  • প্রাক_পথটি PATH ভেরিয়েবলের শুরুতে এন্ট্রি যুক্ত করবে
  • del_path PATH ভেরিয়েবল, যেখানেই থাকুক না কেন এন্ট্রি সরিয়ে ফেলবে

আপনি যদি দ্বিতীয় আর্গুমেন্ট হিসাবে কোনও ভেরিয়েবল নির্দিষ্ট করেন তবে এটি PATH এর পরিবর্তে এটি ব্যবহার করবে।

সুবিধার জন্য, তারা এখানে:

# is $1 missing from $2 (or PATH) ?
no_path() {
    eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;; esac"
}
# if $1 exists and is not in path, append it
add_path () {
  [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
  [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
  no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
    sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}

যদি আপনি এগুলিকে আপনার ব্যাশ স্টার্টআপ ফাইলে যোগ করেন তবে আপনি আপনার PATH এ এভাবে যুক্ত করতে পারেন:

pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin

অথবা একটি ভিন্ন ভেরিয়েবল নির্দিষ্ট করুন:

pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH

আমি আমার আরসি ফাইলগুলিতে এই পদ্ধতিটি ব্যবহার করে প্রিপথগুলি প্রথমে এবং অ্যাডপ্যাথগুলি দ্বিতীয় রাখি। এটি আমার সমস্ত পথের পরিবর্তনকে এক নজরে বুঝতে সহজ করে তোলে। আরেকটি সুবিধা হ'ল লাইনগুলি যথেষ্ট সংক্ষিপ্ত যে আমি প্রয়োজনে কোনও লাইনে একটি ট্রেলিং মন্তব্য যুক্ত করতে পারি।

এবং যেহেতু এগুলি ফাংশন, আপনি সেগুলি কমান্ড লাইন থেকে ইন্টারেক্টিভভাবে ব্যবহার করতে পারেন, যেমন add_path $(pwd)বর্তমান ডিরেক্টরিটিকে পথে যোগ করার কথা বলে ।


ধন্যবাদ। আমি আপনার কোড পরীক্ষা করেছি এবং এটি কার্যকর। আশ্চর্যের বিষয় হল, আমি ডেলপথের (এ ") জন্যও একটি ব্যবহার পেয়েছিলাম" "কিছু কিছু ক্ষেত্রে আমার রাস্তায় নেমে আসে শয়তান কোথা থেকে জানে, তাই আমিও করেছি del_path .
নিককলো এম।

হাই। বাশার্ক স্ক্রিপ্ট থেকে এই পাথফঙ্কগুলি উত্স (অন্তর্ভুক্ত) করা সম্ভব বা আমি সেখানে তাদের অনুলিপি / আটকানো উচিত?
ক্রিশ্চিয়ানো

@ ক্রিশ্চিয়ানো হয় কাজ করবে। এটা সত্যিই আপনার উপর নির্ভর করে।
স্টারফিশ

11

ঠিক আছে, আমি নিম্নলিখিত সমাধানটি বের করেছিলাম, যা আমার মনে হয় মার্জিত (যতক্ষণ শেল সিনট্যাক্স যায়)। এটি বাশের অ্যারে সিনট্যাক্স এবং উপাদানগুলিতে যোগ দেওয়ার জন্য একটি ঝরঝরে উপায় ব্যবহার করে:

paths=(
  /some/dir
  /another/dir
  '/another/dir with spaces in it'
  /yet/another
  /and/another
  /end
)
paths_joined=$( IFS=: ; echo "${paths[*]}" )

PATH=$paths_joined:$PATH

সতর্কতা!

দেখা যাচ্ছে যে এই সমাধানটিতে একটি সমস্যা রয়েছে : @ স্টারডোন এবং @ স্টারফিশের সমাধানগুলির বিপরীতে, এটি প্রথমে পথগুলি PATH এ আছে কিনা তা প্রথমে পরীক্ষা করে না। সুতরাং, যেহেতু আমি এই কোডটি ~ / .bashrc- এ রাখতে চাই (এবং ~ /। প্রোফাইলে নেই), নকল পাথগুলি PATH এ ক্রিম হবে। সুতরাং এই সমাধানটি ব্যবহার করবেন না (যদি না আপনি এটি ~ /। প্রোফাইলে রাখেন (বা, আরও ভাল, ~ / .bash_ প্রোফাইলে এটিতে নির্দিষ্ট নির্দিষ্ট বাক্য গঠন রয়েছে))।


1
খুব সুন্দর. আপনি কি দয়া করে একটি উত্তর গ্রহণ করতে পারেন যাতে অন্যরা যখনই ইতিমধ্যে একটি সন্ধান পেয়েছে তখন সমাধানের প্রস্তাব দিতে আসে না? ধন্যবাদ
বেসিক

সদৃশ পথগুলি আসলেই কোনও সমস্যা নয়। PATHপ্রকৃতপক্ষে পারফরম্যান্স সমস্যা তৈরি করতে আপনার যথেষ্ট ডিরেক্টরি যুক্ত হওয়ার সম্ভাবনা খুব কমই নয় (বিশেষত শেল ক্যাশ সফল লুকআপের কারণে) lookup
চিপনার

5

আমি আমার নীচে ফাংশন ব্যবহার ~/.bashrc। এটি আমার পুরানো ল্যাবটিতে সিসাদমিনের কাছ থেকে পেয়েছি তবে সেগুলি সে লিখেছিল বলে আমি মনে করি না। কেবল আপনার ~/.profileবা এইগুলিতে এই লাইনগুলি যুক্ত করুন ~/.bashrc:

pathmunge () {
        if ! echo $PATH | /bin/grep -Eq "(^|:)$1($|:)" ; then
           if [ "$2" = "after" ] ; then
              PATH=$PATH:$1
           else
              PATH=$1:$PATH
           fi
        fi
}

এর বিভিন্ন সুবিধা রয়েছে:

  • নতুন ডিরেক্টরি যোগ করার পদ্ধতি $PATHতুচ্ছ হল: pathmunge /foo/bar;
  • এটি সদৃশ এন্ট্রি এড়ানো;
  • শুরুর ( pathmunge /foo/barঅথবা শেষে ( pathmunge /foo/barপরে) নতুন এন্ট্রি যুক্ত করতে হবে তা আপনি চয়ন করতে পারেন $PATH

আপনার শেলের প্রারম্ভিককরণের ফাইলটিতে এর পরে এমন কিছু থাকবে:

pathmunge /some/dir
pathmunge /another/dir
pathmunge '/another/dir with spaces in it'
pathmunge /yet/another
pathmunge /and/another
pathmunge /end

ধন্যবাদ। তবে আমি @ স্টারফিশের সমাধানটি বেছে নেব কারণ তার উত্থান হয়নি grep
নিককলো এম।

2
@NiccoloM। কোনও সমস্যা নেই, আপনি যা পছন্দ করেন তা গ্রহণ করুন। স্টারফিশের পদ্ধতির সাথে সতর্ক থাকুন, এটির মাধ্যমে স্বেচ্ছাসেবক কোড কার্যকর করা হবে evalযাতে আপনি যদি ভুল যুক্তি দিয়ে চালনা করেন তবে আপনি কিছু মারাত্মক ক্ষতি করতে পারেন।
টেরডন

নোট দ্রুত ফাংশন RedHat বিদ্যমান যে বাহ্যিক কমান্ড ছাড়াই করতে grepদেখতে bugzilla.redhat.com/show_bug.cgi?id=544652#c7
林果皞

4

আমি আমার AT PATH- তে কয়েকটি ডিরেক্টরি ~ / .bashrc এ যুক্ত করতে চাই।

আমি সাইগউইনে নিম্নলিখিতগুলি ব্যবহার করি। এটি ব্যাশের অন্যান্য সংস্করণগুলিতে কাজ করা উচিত। আপনি unset PATHআপনার বর্তমানটি তৈরি করতে মুছে ফেলতে পারেন PATH(আপনি যদি এটি করেন তবে আপনাকে কীভাবে :বিভাজকগুলি সঠিকভাবে যুক্ত করতে হবে তা নির্ধারণ করতে হবে)।

বিঃদ্রঃ:

  • আমি একবার একটি bashফাংশনে এই কার্যকারিতাটি পেয়েছি কিন্তু ডিস্ক ক্রাশের পরে এটি হারিয়ে ফেলেছি।

আমার মধ্যে .bash_profile:

# Build up the path using the directories in ~/.path_elements
unset PATH
while read line; do 
  PATH="${PATH}$line"; 
done < ~/.path_elements

...

# Add current directory to path
export PATH=".:${PATH}"

ইন ~/.path_elements:

/home/DavidPostill/bin:
/usr/local/bin:
/usr/bin:
/c/Windows/system32:
/c/Windows

ধন্যবাদ। আপনার উত্তর আমাকে অনুরূপ সমাধানে কাজ করতে অনুপ্রাণিত করেছিল। (আমার পৃথক ফাইলে পাথগুলি সংরক্ষণ করা আমার বিরক্তিকর বিষয়))
নিককলো এম

1

আমি এটি আমার .bashrc এ ব্যবহার করি (এবং আমার .zshrc এছাড়াও, যেহেতু আমি সাধারণত ব্যাশের পরিবর্তে যেখানে zsh ব্যবহার করি সেখানে ব্যবহার করি)। মঞ্জুর, এটি আমাকে ম্যানুয়ালি ডিরেক্টরিগুলি যুক্ত করার প্রয়োজন, তবে একটি সুবিধা হ'ল আমি এটি আপডেট করার সাথে সাথে এটি নতুন সার্ভারে অনুলিপি রাখতে পারি এবং সেখানে উপস্থিত নেই এমন ডিরেক্টরিগুলি দিয়ে একটি নতুন সার্ভারে PATH সম্পর্কে উদ্বেগ প্রকাশ করা উচিত।

##
## পাঠ
##
## কেবলমাত্র আমাদের প্যাথএইচটি কেবল নির্দেশিকাগুলির সাথে ক্লোবার্বিংয়ের পরিবর্তে
## এই সার্ভারের জন্য উপযুক্ত হবে না, আমরা কী যুক্ত করি সে সম্পর্কে বুদ্ধিমান হওয়ার চেষ্টা করুন
##
পাথ =, / usr / স্থানীয় পক্ষ থেকে / sbin / usr / স্থানীয় / বিন: / usr / sbin / usr / বিন: পক্ষ থেকে / sbin: / বিন
[-ডি / সিএস / এসবিন] && पथ = / সিএস / এসবিন: AT পথ
[-ডি / সিসি / বিন] এবং & প্যাথ = / সিসি / বিন: AT पथ
[-ড / ইউএসআর / ইউসিবি] && पथ = $ পাঠ: / ইউএসআর / ইউসিবি
[-ড / ইউএসআর / সিসিএস / বিন] ও & পাঠ্য = AT পাঠ: / ইউএসআর / সিসি / বিন
[-ড / ইউএসআর / লোকাল / এসএসএল / বিন] এবং&ATAT = $ পাঠ: / ইউএসআর / স্থানীয় / এসএসএল / বিন
[-ড / ইউএসআর / কেআরবি 5 / বিন] && पथ = $ পাঠ: / ইউএসআর / কেআরবি 5 / বিন
[-d / usr / krb5 / sbin] && पथ = $ পাঠ: / ইউএসআর / কেআরবি 5 / এসবিন
[-d / usr / kerberos / sbin] && PATH = $ পাঠ: / ইউএসআর / কার্বেরোস / এসবিন
[-ড / ইউএসআর / কার্বেরোস / বিন] এবং& पथ = $ পাঠ: / ইউএসআর / কার্বেরোস / বিন
[-ডি / সিএস / লোকাল / জেডকি 1.5.0/bin] && पथ = $ প্যাথ: / সিএস / লোকাল / জেডকি 1.5.0 / বিন
[-ডি / ওশার / জাভা / জেআর .৫.০.০২.২০২ / বিিন] && पथ = $ পাঠ: / ওসর / জাভা / জেআর ১.০.০.০২/২০১man
[-ডি / ওশার / জাভা ২.২/২in] ও& पथ = $ পাঠ: / ওসআর / জাভা ১.২ / বিন
[-ডি / এসসি / লোকাল / স্পার ৫.৮.০/bin] এবং & পাঠ্য = $ প্যাথ: / সিএস / লোকাল / স্পার ৫.৮.০ / বিন
[-ডি / usr / perl5 / বিন] && पथ = AT পাঠ: / usr / perl5 / বিন
[-ড / ইউএসআর / এক্স 11 আর 6 / বিন] এবং& पथ = $ পাঠ: / ইউএসআর / এক্স 11 আর 6 / বিন
[-ডি / ইত্যাদি / এক্স 11] && पथ = AT পাঠ: / ইত্যাদি / এক্স 11
[-ডি / অপ্ট / এসএফডব্লু / বিন] && पथ = AT পাঠ: / অপ্ট / এসএফডব্লু / বিন
[-ড / ইউএসআর / লোকাল / অ্যাপাচি / বিন] ও& पथ = $ পাঠ: / ইউএসআর / স্থানীয় / অ্যাপাচি / বিন
[-ড / ইউএসআর / অ্যাপাচি / বিন] এবং& पथ = AT পাঠ: / ইউএসআর / অ্যাপাচি / বিন
[-ডি / সিএস / অ্যাডমিন / বিন] এবং & পাঠ্য = AT পাঠ: / সিএস / অ্যাডমিন / বিন
[-ড / ইউএসআর / ওপেনউইন / বিন] ও & পাঠ্য = AT পাঠ: / ইউএসআর / ওপেনউইন / বিন
[-ড / ইউএসআর / এক্সপিজি 4 / বিন] এবং& पथ = $ পাঠ: / ইউএসআর / এক্সপিজি 4 / বিন
[-ডি / usr / dt / বিন] && पथ = AT पथ: / usr / dt / বিন

আমি আমার মনপথের জন্যও একই কাজ করছি:

##
## মনপথ
##
## কেবল আমাদের মানপথকে কেবল ডিরেক্টরিগুলির সাথে ক্লোবারিংয়ের পরিবর্তে
## এই সার্ভারের জন্য উপযুক্ত হবে না, আমরা কী যুক্ত করি সে সম্পর্কে বুদ্ধিমান হওয়ার চেষ্টা করুন
##
MANPATH =, / usr / স্থানীয় / মানুষ
[-d / usr / share / man] এবং & মনপথ = AN মনপথ: / usr / ভাগ / মানুষ
[-ড / ইউএসআর / লোকাল / শেয়ার / ম্যান] এবং & মনপথ = AN মনপথ: / ইউএসআর / স্থানীয় / ভাগ / মানুষ
[-d / usr / man] এবং & মনপথ = AN মনপথ: / usr / মানুষ
[-ডি / সিএস / ম্যান] এবং & মনপথ = AN মনপথ: / সিএস / মানুষ
[-ডি / usr / krb5 / man] এবং & মনপথ = AN মনপথ: / usr / krb5 / মানুষ
[-ড / ইউএসআর / কার্বেরোস / ম্যান] এবং & মানপথ = AN মনপথ: / ইউএসআর / কার্বেরোস / ম্যান
[-ডি / ইউএসআর / স্থানীয় / এসএসএল / ম্যান] এবং & মনপথ = $ মনপথ: / মার্কিন / স্থানীয় / এসএসএল / মানুষ
[-ডি / সিএস / লোকাল / জেডকি ২.০.০/২০১৮] এবং & মনপথ = AN মনপথ: / সিএস / লোকাল / জেডকি ১.৫.০/২০১৮
[-ডি / ওশার / জাভা / জেআর .৫.০.০২.২০১৫/২০১৮] এবং & মনপথ = AN মনপথ: / উত্তর / জাভা / জে .১.০.০.০২/২০১man
[-ডি / ওশার / জাভা ২.২/২০১]] এবং & মনপথ = AN মনপথ: / উত্তর / জাভা ১.২/২০১man
[-ড / ইউএসআর / এক্স 11 আর 6 / ম্যান] এবং & মনপথ = $ মনপথ: / ইউএসআর / এক্স 11 আর 6 / ম্যান
[-ড / ইউএসআর / স্থানীয় / এপাচি / ম্যান] এবং & মনপথ = AN মনপথ: / ইউএসআর / স্থানীয় / আপাচে / মানুষ
[-d / usr / স্থানীয় / mysql / man] এবং & মনপথ = & মনপথ: / usr / স্থানীয় / mysql / মানুষ
[-ডি / এসসি / লোকাল / স্পার ৫.৮.০/man] এবং & মনপথ = AN মনপথ: / সিএস / লোকাল / স্পার ৫.৮.০/২০১৮
[-d / usr / perl5 / man] এবং & মনপথ = AN মনপথ: / মার্কিন / পার্ল 5 / মানুষ
[-ড / ইউএসআর / লোকাল / পার্ল / ম্যান] এবং & মনপথ = AN মনপথ: / ইউএসআর / লোকাল / পার্ল / ম্যান
[-ডি / ওশার / লোকাল / স্পেরার 5.8.0/man] এবং & মনপথ = AN মনপথ: / শ্রোতা / লোকাল / স্পার 5.8.0/man
[-ড / ইউএসআর / ওপেনউইন / ম্যান] এবং & মনপথ = AN মনপথ: / ইউএসআর / ওপেনউইন / মানুষ

PATH- র সাথে অ-অযৌক্তিক ডিরেক্টরি যুক্ত হওয়ার ভয় ছাড়াই আমি পৃথক পরিবেশে সিস্টেমে অনুলিপি করতে পারি এমন একক ফাইল থাকার পাশাপাশি, এই পদ্ধতির সাথে আমি PATH- তে ডিরেক্টরিগুলি প্রদর্শিত হতে চাইতে আদেশটি নির্দিষ্ট করার অনুমতি দেওয়ার সুবিধাও রয়েছে। যেহেতু প্রতিটি সংজ্ঞার প্রথম লাইনটি PATH ভেরিয়েবলটিকে সম্পূর্ণরূপে সংজ্ঞায়িত করে, তাই আমি আমার .bashrc আপডেট করতে এবং এটি সম্পাদনার পরে উত্সটি তৈরি করতে সক্ষম করে আমার শেলটি সদৃশ এন্ট্রিগুলি যোগ না করে আপডেট করা হয়েছে (যা আমি দীর্ঘদিন আগে অনুভব করতাম যখন আমি সহজভাবে শুরু করেছি " AT পাঠ = AT পাঠ: / নতুন / দির "This এটি নিশ্চিত করে যে আমি যেভাবে চাই তার ক্রমটি একটি অনুলিপি পেয়েছি।


1
বিকল্প প্রস্তাবনা: d="/usr/share/man" ; [ -d "$d" ] && MANPATH="$MANPATH:${d}"এটি ছোট হবে এবং একটি নতুন দির যুক্ত করা সহজ হবে (কেবল একটি লাইন অনুলিপি করুন এবং প্রথম "ডি = ...." অংশটি সম্পাদনা করুন)। তবে, পাঠ্যপথের জন্য, আমি মনে করি আপনি আপনার পাঠাতে অনেক বেশি ডায়ার দিয়ে শেষ করবেন, যা সর্বদা ভাল হয় না (যদি কিছু "foo" কমান্ড একটি কম পরিচিত পাথের মধ্যে উপস্থিত থাকে, এবং সম্পূর্ণ আলাদা কিছু করে থাকে তবে) যা নিয়মিত ব্যবহারকারীরা কী আশা করবেন?)
অলিভিয়ার ডুলাক

ওপিতে রাস্তা যুক্ত করার জন্য আরও নিবিড় উপায়ের কথা বলা হয়েছিল। এটি ইতিমধ্যে যা এড়াতে চাইছিল তার চেয়ে অনেক বেশি ভার্বোজ এবং ত্রুটির প্রবণতা।
আন্ডারস্কোর_ডে

-1

একটি সহজ উপায় আছে! পড়ুন শেল কার্যাবলী এবং পথ ভেরিয়েবললিনাক্স জার্নাল , মার্চ 01, 2000 দ্বারা স্টিফেন Collyer

ফাংশনগুলি আমাকে আমার বাশ পরিবেশে একটি নতুন ডেটা টাইপ ব্যবহার করতে দেয় - কোলন বিচ্ছিন্ন তালিকা। PATH ছাড়াও, আমি এগুলি আমার LOCATE_PATH, মনপথ এবং অন্যান্যকে সামঞ্জস্য করতে এবং ব্যাশ প্রোগ্রামিংয়ের একটি সাধারণ ডেটাটাইপ হিসাবে ব্যবহার করি। আমি কীভাবে আমার প্যাথ সেট আপ করব (ফাংশনগুলি ব্যবহার করে):

# Add my bin directory to $PATH at the beginning, so it overrides 
addpath -f -p PATH $HOME/bin

# For Raspberry Pi development (add at end)
addpath -b -p PATH ${HOME}/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

# remove nonexistent directories from PATH
delpath -n -p PATH

# ensure PATH contains unique entries
uniqpath -p PATH

যেহেতু লিনাক্স জার্নাল লিংক হিসাবে "ভাঙ্গা" হিসেবে অভিহিত করা হয়, আমি এ .shar ফাইলে ব্যাশ পথ কার্যাবলী রেখেছি http://pastebin.ubuntu.com/13299528/


3
এগুলি কি? ওপি কীভাবে সেগুলি ব্যবহার করে? সম্ভবত এগুলি আপনার উত্তরের ভাঙা লিঙ্কে বর্ণিত হয়েছে যা হ'ল কারণ আমরা সর্বদা উত্তরগুলিকে স্ব-অন্তর্ভুক্ত রাখতে চাই। দয়া করে সম্পাদনা করুন এবং আপনার উত্তরে প্রকৃত ফাংশন অন্তর্ভুক্ত করুন।
টেরডন

@ ইটারডন: লিঙ্কটি আমার পক্ষে কাজ করে, আমি পেস্টবিনে একটি .শার ফাইল রাখি, আমি এখানে 1K লাইন পোস্ট করব না।
ওয়ালটিনেটর

উফফ, এখন আমার জন্যও কাজ করে। আমি মন্তব্য ছেড়ে যখন এটি না। যাইহোক, আমার মন্তব্যের মূল বক্তব্যটি ছিল আমরা উত্তরে বাইরের সংস্থাগুলির সাথে সংযোগ এড়াতে চেষ্টা করি। আমরা তথ্যটি এখানে থাকতে চাই যেখানে এটি আপডেট করা, সম্পাদনা করা যায় এবং লিঙ্ক পচানোর জন্য অনাক্রম্য।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.