কোন পরিস্থিতিতে নির্বাহযোগ্য প্রথম যে পথে ব্যবহার করা হবে তা ব্যবহৃত হবে না


15

আমি পথে কোনও এক্সিকিউটেবলের প্রথম ঘটনাটি ব্যবহার না করে জেএসএসের সাথে (হোমব্রিউ দিয়ে ইনস্টল করা 5.4.2_1) কিছু অদ্ভুত আচরণ করছি।

এই দৃশ্যটি এখানে:

echo $PATH আয়:

/usr/local/Cellar/zplug/HEAD-9fdb388/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

মদ দুটি হয়

/usr/local/Cellar/zplug/HEAD-9fdb388/bin     

এবং

usr/local/bin/brew

কোনটি মিশ্রণ দেয় তা চালিয়ে এটি নিশ্চিত হয় :

/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew   
/usr/local/bin/brew

তবে আমি যখন চালাব তখন এটি কোন ফর্মটি ফিরে আসবে:

/usr/local/bin/brew

এবং মিশ্রণ না চালানো /usr/local/bin/brewচেয়ে চালানো হয়/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew

মদ্যপান আগে যখন পথে হয় তখন এটি কীভাবে ঘটতে পারে?

সাহায্য প্রশংসা।


7
rehashএবং যারা আবার চালাতে - যদি এটি এখনও পরে ঘটে, সম্পাদন করা যে।
মাইকেল হোমার

@ মিশেলহোমর: হ্যাঁ হ'ল এখানে অভিজ্ঞতা।
জোশুয়া

উত্তর:


25

which -a cmdcmdডিরেক্টরিতে আপনার নামের $path(এক্সেস, ফাংশন, বিল্টিনস ...) ছাড়াও চালিত অনুমতিপ্রাপ্ত সমস্ত নিয়মিত ফাইল সন্ধান করে ।

যদিও which cmdআয় কমান্ড যে zshচালানো হবে ( whichএকটি builtin হয় zshমত tcshকিন্তু অন্যান্য অধিকাংশ শাঁস অসদৃশ)।

zsh, অন্যান্য শাঁসের মতো একটি hashটেবিলের মধ্যে এক্সিকিউটেবলের পাথগুলি স্মরণ করে যাতে আপনি যখন $pathপ্রতিটি সময় আবেদন করেন তখন সমস্ত ডিরেক্টরিতে সেগুলি অনুসন্ধান না করে।

সেই হ্যাশ টেবিলটি ( $commandsএসোসিয়েটিভ অ্যারে ইন উন্মুক্ত zsh) hashকমান্ড (স্ট্যান্ডার্ড POSIX শেল কমান্ড) দিয়ে ম্যানিপুলেট করা যেতে পারে ।

আপনি চালাতে তাহলে brewকমান্ড (অথবা which/type/whence brew, অথবা ব্যবহৃত কমান্ড সমাপ্তির কিছু primed যেত যে হ্যাশ / ক্যাশে) আগেই যোগ করা হয়েছিল /usr/local/Cellar/zplug/HEAD-9fdb388/binবা তার পূর্বের /usr/local/Cellar/zplug/HEAD-9fdb388/binযোগ করা হয়েছিল $path, zshতার পাথ স্মরণ এবং এটি সংরক্ষণ করা যেত $commands[brew]=/usr/local/bin/brew

hash -rসেক্ষেত্রে আপনি (বোর্ন শেলের মতো) বা rehash(সিএসএসের মতো) স্মরণকৃত কমান্ডগুলি zsh ভুলে যেতে (সেই ক্যাশেটি অকার্যকর করতে পারেন) ব্যবহার করতে পারেন , তাই এটি পরের বার এটি সন্ধান করে এটি নতুন জায়গায় খুঁজে পেতে পারে।


ধন্যবাদ - এটি সমস্যার সমাধান করেছে। আমি কি কমান্ড [ব্রিউ] প্রতিধ্বনি করতে সক্ষম হব - আমি কিছুই দেখছি না?
ধারাবাহিকতা

1
@ কনটিনিয়াম, দুঃখিত, আমার খারাপ, তা $commandsনয় $command। সম্পাদনা দেখুন।
স্টাফেন চেজেলাস

0

/usr/local/bin/brew সাধারণত একটি প্রতীকী লিঙ্ক।

তাই /usr/local/bin/brewএবং /usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew

সম্ভবত একই ফাইল।

টাইপ করুন:

ls -al /usr/local/bin/brew

নিশ্চিত করতে.

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