আমার প্যাথএইচএইচএইচএইচএইচডিএস ডিরেক্টরি কেবল ইতিমধ্যে উপস্থিত না থাকলে কি যুক্ত করার উপায় আছে?


15

যদি আমার প্যাথএইচটি তে ইতিমধ্যে উপস্থিত না থাকে তবে কোনও ডিরেক্টরি যুক্ত করার জন্য কি zsh এর কোন সহজ উপায় আছে? (বা আরও সাধারণভাবে যে কোনও পরিবেশের পরিবর্তনশীল)। আমি চেষ্টা করেছিলাম:

PATH+=/my/directory

... তবে এটি যদি দু'বার সম্পাদিত হয় তবে এটি দুটিবার যুক্ত হয় added


2
@ তবে, এটি কোনও সদৃশ নয় যেহেতু অন্যান্য প্রশ্ন বাশের জন্য ছিল, যদিও এই প্রশ্নটি zsh এর জন্য যা এই সমস্যাটির সমাধান করার নিজস্ব উপায় রয়েছে।
স্টাফেন চেজেলাস

উত্তর:


32

ইন zsh $PATHআবদ্ধ থাকে (দেখুন typeset -T) এর $pathঅ্যারে। আপনি এই অ্যারেটির সাথে অনন্য মান রাখতে বাধ্য করতে পারেন :

typeset -U path

এবং তারপরে, এর সাথে পাথ যুক্ত করুন:

path+=(~/foo)

যদি এটি ইতিমধ্যে থাকে তবে চিন্তা করার দরকার নেই।

এটিকে সামনের অংশে যুক্ত করতে, করুন:

path=(~/foo "$path[@]")

বা:

path[1,0]=~/foo

যদি ~/fooএটি ইতিমধ্যে ছিল তবে $pathএটি সামনে চলে যাবে।


মানে না typeset -Ug path? আমি যখন typeset -U pathআমার ~/.zshrcফাইলে ব্যবহার করি তখন zshrc চলাকালীন কিছুই না থাকায় আমি সর্বদা ত্রুটি ফিরে পাই
কলসিত

@eMxyzptlk, আজব। -gহ'ল সুযোগটি সীমাবদ্ধ করা এড়ানো, তবে এর ~/.zshrcপরিধিটি ইতিমধ্যে বিশ্বব্যাপী। এছাড়াও, আমি zshকোনও খালি সম্পর্কে অভিযোগ কখনও দেখিনি $PATH(কমান্ডটি ব্যতীত অবশ্যই ত্রুটিগুলি খুঁজে পায় নি)।
স্টাফেন চেজেলাস

3

export -U PATH=~/foo${PATH:+:$PATH}আপনার স্টার্টআপ ফাইলগুলির মধ্যে একটিতে যুক্ত করুন । -Uবিন্যাস বা নির্দিষ্ট মধ্যে একটি মানের শুধুমাত্র প্রথম সংঘটন রাখে :পাথ মত সীমায়িত ভেরিয়েবল।


-3

আপনাকে এরকম কিছু করতে হবে:

if echo $PATH | grep :newpath: ; then doIfPresent; else doIfMissing; fi

এটি কেবল তখনই কাজ করে যদি newpathদুটি ':' সীমিত করে দেওয়া হয়, যখন এটি শুরুতে বা একইভাবে শেষ হয় তখন কেসগুলি বিবেচনা করা উচিত।

Urgh।


1
আপনি কেবল বোর্ন / পসিক্স বৈশিষ্ট্য সহ শেলের ভিতরে এটি করতে পারেন can মাথাব্যাথা উদ্ধৃত এই এড়াতে (অন্তত করুন যে echo "$PATH": সবসময় পরিবর্তনশীল বদল প্রায় ডবল কোট করা )। case ":$PATH:" in *:/new/directory:*) :;; *) PATH=$PATH:/new/directory;; esac
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.