পরিবেশের ভেরিয়েবলগুলির জন্য ব্যাশ অটো সম্পূর্ণ [বন্ধ]


25

ব্যাশ স্বতঃপূরণ বৈশিষ্ট্যটি 11.04-তে পরিবেশের ভেরিয়েবলগুলির সাথে কাজ করে বলে মনে হচ্ছে না। বর্তমান আচরণ নীচে নির্দেশিত হয়

export SCRIPT=/home/user/script
cd $SCRIPT/<tab>

প্রম্পট \হওয়ার আগে একটি ব্যাকস্ল্যাশ ( ) যুক্ত হওয়ার আগে ফলাফল$SCRIPT

cd \$SCRIPT/

একই জিনিস ঘটে বা অন্য কোনও কমান্ডের cdসাথে প্রতিস্থাপিত হলেls

এছাড়াও, যদি $ ScriptT- এ থাকা পথে কোনও এক্সিকিউটেবল ফাইল থাকে এবং আমি এটি চালাতে চাই

$SCRIPT/<tab>

বাশ ফোল্ডারের অভ্যন্তর অপশনগুলি দেখায় না (পরিবেশের ভেরিয়েবলগুলির মধ্যে থাকা पथের অভ্যন্তরে একক ফাইল বা একাধিক ফাইল / ডিরেক্টরি রয়েছে তা নির্বিশেষে) Bash

অন্য কথায়, স্বয়ংক্রিয়রূপে পরিবেশের ভেরিয়েবলগুলির সাথে কাজ করে না।



আমি মনে করি এটি ব্যাশ সংস্করণ (4.1 বা 4.2) এর সাথে কোনও সম্পর্কযুক্ত নয়। আমি উত্স থেকে কেবল বাশ -২.১ ইনস্টল করেছি এবং এটি ৪.২.২৪ এর পরিবর্তে ব্যবহার করেছি (উবুন্টু ১২.০৪ সংস্করণ; উত্স থেকে ইনস্টল করা হয়েছে যাতে প্রতিটি সিস্টেমে আপগ্রেসে প্যাকেজটি 'ধরে রাখতে না হয়) এবং আচরণটি ঠিক একই। খুব, খুব বিরক্তিকর ...

4
এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি পুরানো অসমর্থিত মুক্তির একটি বাগ সম্পর্কে। বাগটি এখানে বর্ণিত হয়েছে এবং 12.04 এবং তারপরে
ওয়ারেন হিল

1
@ ওয়ারেনহিল এটি অফ-টপিক হতে পারে কারণ এটি একটি বাগ সম্পর্কে (এবং আমি এই কারণে এটি বন্ধ করার পক্ষে ভোট দিয়েছি)। ত্রুটিটি অসমর্থিত মুক্তির ক্ষেত্রে যদিও তা অপ্রাসঙ্গিক - যদিও আক্রান্ত রিলিজের ইওএল তারিখটি আসার সাথে সাথে আমরা পুরানো প্রশ্নগুলির অফ-টপিক হিসাবে উত্তরগুলি বন্ধ করি না । কেবলমাত্র নতুন / উত্তরহীন ইওএল প্রশ্নগুলি অফ-টপিক।
এলিয়াহ কাগন

উত্তর:


13

এই বাগটি ব্যাশ ৪.২ এ প্রবর্তিত হয়েছিল। এটি সম্পর্কে এখানে দীর্ঘতর থ্রেড রয়েছে:

http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html

সংক্ষেপে, ব্যাশের বিকাশকারী চেত রেমি কীভাবে এখনও এটি ঠিক করতে চলেছেন তা নিশ্চিত নন।


৪.১-এ ফিরে যাওয়ার কোনও উপায় আছে কি?
নীলচ্যাট

1
একটি ঠিকঠাক চলছে: পুরানো আচরণটি পুনরুদ্ধার করতে চেট একটি "ডাইরেক্টস্প্যান্ড" শপ যুক্ত করেছে। এটি এখনও ওয়ানিরিকের মধ্যে নেই।
নেলসন

8
এটি আমার কাছে অবাক করার মতো বিষয় যে এত লোক খুব কম লোকই অভিযোগ করেছে। বাশ বেশ কয়েক বছর ধরে যেভাবে কাজ করেছে তা থেকে এটি একটি বড় পরিবর্তন।
স্কট সি উইলসন

11

পুরানো আচরণটি ফিরে পেতে কমান্ডটি ব্যবহার করুন

shopt -s direxpand

বা এটি আপনার অন্তর্ভুক্ত .bashrc

আপনি যদি একই .bashrc ব্যাশের বিভিন্ন সংস্করণ সহ ব্যবহার করেন তবে ব্যবহার করুন

if ((BASH_VERSINFO[0] >= 4)) && ((BASH_VERSINFO[1] >= 2))
    then shopt -s direxpand
fi

1
এই পরীক্ষাটি ব্যাশ 5.0 এবং 5.1 এর জন্য ব্যর্থ হবে।
কিথ থম্পসন

8

Http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html এ কার্যকরী পরামর্শ দেওয়া হয়েছে :

  1. <Tab>আপনার পরিবেশের পরিবর্তনশীল স্টেটটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ করতে ব্যবহার করুন আপনি কমান্ড লাইনটি বলেcd $MYVAR
  2. হিট <Esc>+ + <Ctrl>-Eবর্তমান কমান্ড লাইন অর্থাত বিকল্প প্রসারিত করতে $MYVARএর মান পথ দ্বারা
  3. একটি যুক্ত করুন /এবং তারপরে <Tab>যথারীতি অটো-সমাপ্তি উপভোগ করুন

এটি ধরে নিয়েছে যে আপনি ইমাস মোডে ( set -o emacsএবং) bash_completionসংবেদনশীলভাবে সেট আপ করেছেন cd(যেমন complete -o nospace -F _cd cd)।

দুর্ভাগ্যক্রমে এটি vi মোডে কাজ করে না ( set -o vi) কারণ কমান্ড লাইন সম্প্রসারণ তখন উপলভ্য নয়।


2

শেল ভেরিয়েবল টাইপ করার পরে

cd $SCRIPT/

Cntrl-Alt-E টাইপ করুন। এটি পরিবর্তনশীল প্রসারিত করে

cd /home/user/script/

এটি ফেডোরা 16 তে EDITOR = vi এর সাথে কাজ করে।

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