Zsh এর $ PATH ক্যাশে অটো-সম্পূর্ণ সূচী (বা এটি যাই হোক না কেন) এবং বাইনারিগুলি পুনর্নির্মাণ করুন


75

নতুন সফ্টওয়্যার ইনস্টল করার পরে, zsh সহ একটি ইতিমধ্যে খোলা টার্মিনাল নতুন কমান্ডগুলি সম্পর্কে জানতে পারে না এবং এটিগুলির জন্য স্বয়ংক্রিয়-সম্পূর্ণ তৈরি করতে পারে না। দৃশ্যত একটি নতুন টার্মিনাল খোলার ফলে সমস্যাটি ঠিক হয়ে গেছে, তবে সূচীটি (বা আপনি যা বলবেন) তা কি আবার তৈরি করা যেতে পারে যাতে স্বয়ংক্রিয়-সম্পূর্ণ পুরানো টার্মিনালটিতে কাজ করবে?

আমি চেষ্টা করেছি compinitকিন্তু তাতে কোন লাভ হয়নি। এছাড়াও, এমন কোনও উপায় আছে যা শেল-নির্ভর নয়? উত্তরটি যাচাই করার একটি উপায় পেয়ে খুব ভাল লাগল (কিছু আনইনস্টল করে পুনরায় ইনস্টল করা বাদে)।

কি আমি বলতে চাচ্ছি কমান্ড নাম কয়েকটি অক্ষর লেখার পরে, আমি টিপতে পারেন হয় Tab, এবং zshপুরো নাম টেনে বিশ্রাম করা উচিত।


1
দুটি ধরণের স্বয়ংক্রিয়-সমাপ্তির অর্থ আপনি যখন বলতে পারেন যে কোনও বিদ্যমান শেল "[নতুন কমান্ড]" এর জন্য স্বয়ংক্রিয় সম্পূর্ণ তৈরি করতে পারে না: "কমান্ড সমাপ্তি" - শেলটি সম্পূর্ণ করার পরে নতুন কমান্ডের নাম প্রস্তাব করার চেষ্টা করছে কমান্ড পজিশনে এবং "যুক্তি সমাপ্তি" - নতুন কমান্ডের জন্য বিকল্পগুলি / আর্গুমেন্টগুলি পরামর্শ দেওয়ার জন্য শেলটি পেতে একবার চেষ্টা করার পরে আপনি এর নামটি টাইপ করে ফেলেছেন। কোনটি আপনাকে সমস্যা দিচ্ছে?
ক্রিস জনসেন

1
ভাল প্রশ্ন! আমি সবসময় কেবল ধরে
নিয়েছিলাম

1
অফটোপিক - লোকেরা এত চঞ্চল 4 জন পছন্দসই তবে কেবল 2 টি আপভোট ... আমি এটিকে অদ্ভুত বলে মনে করি যে খুব কম লোক কীভাবে জিনিসগুলিকে উত্সাহিত করে।
xenoterracide

@ ক্রিস আমার অর্থ কমান্ডের নামের কয়েকটি অক্ষর টাইপ করার পরে এবং ট্যাব টিপুন, zsh বাকিটি করা উচিত এবং পুরো নামটি টানতে হবে।
ফুনেহে

@xeno আমি এটিও লক্ষ্য করেছি; পছন্দের
কোনও কিছুর কাছে

উত্তর:


76

এক্সিকিউটেবল কমান্ডের ক্যাশে পুনর্নির্মাণ করতে, ব্যবহার করুন rehashবা hash -rf

আপনি hash_list_allবিকল্পটি আনসেট করেননি তা নিশ্চিত করুন (এটি এমনকি কম ডিস্ক অ্যাক্সেসের কারণ হয়ে থাকে তবে ক্যাশে আপডেটটি প্রায়শই কম করে তোলে)।

আপনি যদি একটি কমান্ড টাইপ করতে হবে না চান, আপনি zsh বলতে যখন আপনার নিম্নলিখিত পংক্তিটি রেখে সমাপ্তির তার ক্যাশে বিশ্বাস করতে না পারেন, ~/.zshrc¹:

zstyle ":completion:*:commands" rehash 1

এখানে একটি পারফরম্যান্স ব্যয় রয়েছে তবে এটি একটি সাধারণ ডেস্কটপ সেটিংয়ে নগন্য। (আপনার যদি $PATHএনএফএস, বা একটি র‌্যাম-অনাহারে থাকা সিস্টেম থাকে তবে তা নয়))

zstyleকমান্ড নিজেই নথিভুক্ত করা zshmoduleমানুষ পাতা। শৈলী মানের মধ্যে নথিভুক্ত করা হয় zshcompsysএবং zshcompwidমানুষ পৃষ্ঠা বা আপনি (এখানে উৎস পড়তে পারেন _command_namesফাংশন)। আপনি যদি কিছু পঠনযোগ্য ডকুমেন্টেশন চান ... আপনি যদি কিছু খুঁজে পান তবে আমাকে জানান!

¹ প্রয়োজন zsh≥4.3.3, ধন্যবাদ ক্রিস জনসেন


3
হয় পূর্বে সম্পূর্ণভাবে ধুয়ে ফেলা শেলগুলিতে "নতুন কমান্ডগুলি" কমান্ড-নাম সমাপ্তকরণের পুনঃস্থাপনের উদ্দেশ্যে সক্ষম করা উচিত। PATH (বা পথ) নির্ধারণের ফলে পুনরায় বিঘ্ন ঘটবে; এইভাবে PATH="$PATH"কাজ করবে। HASH_LIST_ALLআমার ডকুমেন্টেশনে একটি ডিফল্ট হিসাবে প্রদর্শিত হয়।
ক্রিস জনসেন

এটা আমার জন্য উত্তর।
বাইজিফিফিলং

13

নতুন কমান্ডগুলির জন্য কাজ করতে যদি আপনার "যুক্তি সমাপ্তি" পেতে সমস্যা হয়ে থাকে তবে কমপিনেট সম্ভবত আপনার প্রয়োজনীয় কমান্ড হ'ল তবে এটির ক্ষেত্রে একটি ক্যাশেিং ব্যবস্থা রয়েছে যা আপনার সমস্যার কারণ হতে পারে।

আমার সংস্করণ (৪.৩.১০) এর ডকুমেন্টেশনটিতে বলা হয়েছে যে পরবর্তী সংস্করণগুলিকে গতিযুক্ত.zcompdump করার জন্য সংকলিত সমাপ্তি ফাংশনগুলি সঞ্চয় করতে কমপিট একটি ক্যাশেড "ডাম্প ফাইল" ব্যবহার করে । এটি তখনই ডাম্প ফাইলটিকে অকার্যকর করে দেয় যখন এটি সমাপ্তি সংখ্যার ফাইলের ( fpathযে ফাইলগুলির সাথে শুরু হয় #compdef …বা ফাইলগুলি শুরু হয় #autoload …) পরিবর্তনের বিষয়টি লক্ষ্য করে । সম্ভবত নতুন সফ্টওয়্যার ইনস্টল করার ফলে এই ধরণের সমাপ্তি ফাইলগুলির সংখ্যা পরিবর্তন হবে (ধরে নিলে এটি এর zsh অটো-সম্পূর্ণ ফাইলগুলি সঠিক জায়গায় ইনস্টল করেছে ), সুতরাং আমি প্রত্যাশা করব যে কোনও সমতল compinitকাজ করবে। আপনি যদি এমন পরিস্থিতিতে থাকেন যেখানে এটি কাজ করে না তবে আপনাকে ডাম্প ফাইলটি বাইপাস করতে বা ম্যানুয়ালি অকার্যকর করতে হতে পারে।

ডাম্প ফাইল ব্যবহার করে এড়িয়ে চলতে ব্যবহার করুন compinit -D; এটি কেবলমাত্র বর্তমান শেলকে প্রভাবিত করবে।

ডাম্প ফাইলটি পুনর্নির্মাণ করতে, এটি সরিয়ে পুনরায় চালু করুন compinit:

rm -i ${ZDOTDIR:-${HOME:?No ZDOTDIR or HOME}}/.zcompdump &&
compinit

এটি বর্তমান শেল, বিদ্যমান শেলগুলি যা প্লেইন চালায় compinitএবং ভবিষ্যতের কোনও শেলকে প্রভাবিত করবে ।


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