জেডএসএইচে PATH ভেরিয়েবলটিতে একটি নতুন এন্ট্রি যুক্ত করা হচ্ছে


185

আমি zsh ব্যবহার করছি এবং আমি চলকটিতে একটি নতুন এন্ট্রি ( /home/david/pear/bin) যুক্ত করার চেষ্টা করছি PATHতবে কীভাবে তা আমি জানি না।

যে বিষয়টি আমাকে সবচেয়ে বেশি বিভ্রান্ত করে তা হ'ল PATHআমার ~/.zshrcফাইলে কোনও ভেরিয়েবলের একক রেফারেন্স নেই , তবে echo $PATHরিটার্নগুলি করছেন :

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

সুতরাং একটি PATHপরিবর্তনশীল কোথাও সেট করা হচ্ছে।

উত্তর:


205

এখানে, এই লাইনটি এতে যুক্ত করুন .zshrc:

export PATH=/home/david/pear/bin:$PATH

সম্পাদনা : এটি কাজ করে তবে নীচে অনির উত্তর ভাল, কারণ এটি স্ট্রাকচার্ড ইন্টারফেসের সদ্ব্যবহার করে ZSH এর মতো ভেরিয়েবলের জন্য সরবরাহ করে $PATH। এই পদ্ধতির জন্য আদর্শ bash, তবে যতদূর আমি জানি, জেডএসএইচ আরও ভাল বিকল্প সরবরাহ করলে এটি ব্যবহার করার কোনও কারণ নেই।


29
হাহা এটি ভুলে যান, আমি যদিও এটি কেবল একটি কনসোল কমান্ড ছিল কিন্তু। লাইনটি লাইনটি .shshrc এ যুক্ত করে কৌশলটি করেছে। অনেক ধন্যবাদ!
ডেভিড বারেটো

1
আমার .zshrc এর মধ্যে ইতিমধ্যে PATH রফতানি করার জন্য একটি লাইন ছিল তাই আমি এটিকে পরিবর্তিতটির সাথে প্রতিস্থাপন করেছি।
জ্যাক হস্টন

5
আমি মুছে ফেলার জন্য এন্ট্রি প্রায় উদ্ধৃতি চিহ্ন অর্থাৎ ছিল PATH="/home/david/pear/bin:/usr/bin:etc"থেকে PATH=/home/david/pear/bin:/usr/bin:etcএটা zshrc থাকার জন্য।
a7omiton

3
@ ট্যাকো, আপনি
মেনকারগো

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

214

আসলে, জেডএসএইচ ব্যবহারের ফলে আপনাকে পরিবেশের ভেরিয়েবলগুলির বিশেষ ম্যাপিং ব্যবহার করতে দেওয়া হয় allows সুতরাং আপনি সহজভাবে করতে পারেন:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

আমার জন্য এটি খুব ঝরঝরে বৈশিষ্ট্য যা অন্য ভেরিয়েবলগুলিতে প্রচার করা যায়। উদাহরণ:

typeset -T LD_LIBRARY_PATH ld_library_path :

16
চমৎকার উত্তর. আমার ক্ষেত্রে, ~/.zshrcপরে উত্সাহিত হয় .profileএবং সমস্ত কিছু ওভাররাইট করে .profile। আমার চুলগুলি টানতে টানতে কিছুক্ষণ লাগল।
খানহ এনগুইন

1
আপনি যদি একাধিক উপাদান সংযোজন না করেন তবে অ্যাপেন্ডের ক্ষেত্রে প্যারেন্সের দরকার হয় না। এটি প্রায়শই উদ্ধৃতিগুলির প্রয়োজন হয় না। এত সহজ, সংযোজন করতে সংক্ষিপ্ত উপায়
মীখা ইলিয়ট

1
@ সুপারউবারডুপার, আপনার বুঝতে হবে যে প্রায় কোনও ইউনিক্স শেল স্টার্টআপ ফাইলগুলি সহজেই পড়তে পারে যা প্রায় একই রকম হয় যদি আপনি এটি ইন্টারেক্টিভভাবে শেলটিতে টাইপ করতে চান। "আরসি" ফাইল সম্পর্কিত আপনি এই প্রশ্নের
on

5
এর সাথে সুস্পষ্ট রফতানি এড়াতে -xএবং এর সাথে একটি ভেরিয়েবলের মধ্যে কেবল অনন্য মানগুলি রেখে যাওয়া সম্ভব -U, কোলনটি ডিফল্টরূপে ধরে নেওয়া হয়, তাই এটি হতে পারে:typeset -TUx PATH path
শোক

2
@ ড্যানিয়েলস্প্রিঞ্জার, না। আপনি যদি সেই শর্তাদিতে এটি চান তবে: path=(...)(রেফারেন্স $pathবা $PATHঅভ্যন্তরের অভ্যন্তরে) path=(... $path)নির্ধারিত , প্রিপেন্ড এবং path+(...)সংযোজন।
ony

38

আপনি PATHএকটি ন্যূনতম ফ্যাশনে সংযোজন করতে পারেন । আপনি একাধিক উপাদান সংযোজন না করা হলে বন্ধনীগুলির দরকার নেই। এটির জন্য সাধারণত উদ্ধৃতিগুলির প্রয়োজন হয় না। সুতরাং সংযোজনের সহজ ও স্বল্প উপায় হ'ল:

path+=/some/new/bin/dir

সাধারণ ব্যবহার

তারপরে একটি নতুন স্ক্রিপ্ট / এক্সিকিউটেবলের পরীক্ষার জন্য সাধারণ প্যাটার্নটি হয়ে যায়:

path+=$PWD/.
# or
path+=$PWD/bin

এই লোয়ার-কেস সিনট্যাক্সটি অ্যারেpath হিসাবে ব্যবহার করছে , তবুও তার উচ্চ-কেস অংশীদারের সমতুল্যকেও প্রভাবিত করে (যার মাধ্যমে এটি "আবদ্ধ" )।PATHtypeset

(লক্ষ্য করুন যে বিভাজক হিসাবে কোনওটির প্রয়োজন / প্রয়োজন নেই: ))

সম্পর্কিত জোয়ার

ট্রিটিং pathএই ভাবে (একটি অ্যারের হিসাবে) এছাড়াও অর্থ: একটি না করার কোন প্রয়োজন rehash সদ্য pathed কমান্ড পেতে পাওয়া যাবে।

এছাড়াও কটাক্ষপাত করা vared pathসম্পাদন করা একটি গতিশীল উপায় হিসেবেpath এবং অন্যান্য জিনিস।

আপনি কেবল pathএই প্রশ্নের জন্যই আগ্রহী হতে পারেন , তবে যেহেতু আমরা রফতানি এবং অ্যারে সম্পর্কে কথা বলছি, লক্ষ্য করুন যে অ্যারেগুলি সাধারণত রফতানি করা যায় না।

এমনকি আপনি সদৃশ এন্ট্রি গ্রহণ থেকেও বাধা দিতেPATH পারেন ( এটি এবং এটি উল্লেখ করুন ):

typeset -U path

এটি কি 'পথ + =: / / ফু / বার' হওয়া উচিত নয়? (একটি কোলন সহ)
অ্যান্ড্রু লরিয়েন

1
@ Andrewlorien আমি কোলন বিভাজক সম্পর্কে বিশদ সহ উত্তরটি আপডেট করেছি।
মিকাহ এলিয়ট

মনে রাখবেন যে পথের পরে যদি কোনও মন্তব্য থাকে তবে আমাদের মতো উক্তিগুলি দরকার path+='my/path' # for fun। আপনার স্পেস থাকলে তা সুস্পষ্ট, তবে আপনার মন্তব্য থাকলে খুব বেশি কিছু নয়।
ফ্রাঙ্কলিন ইউ

"(লক্ষ্য করুন যে নো: বিভাজক হিসাবে প্রয়োজন / প্রয়োজন ছিল।)" এটি কেবল ছোট হাতের জন্যই সত্য path। .Zshrc:PATHPATH+=:/Users/path/to/my/folder
এমমেট আর।

36

একটি লাইনার, ~/.zshrcফাইল না খোলায়

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

অথবা

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

প্রভাবটি দেখতে, source ~/.zshrcএকই ট্যাবে করুন বা একটি নতুন ট্যাব খুলুন


1
জেডশ শেল দিয়ে ওএসএক্সে নিখুঁতভাবে কাজ করেছেন।
স্ট্রাইকার 16

1
মোহন মত কাজ!
আকবর শ ইব্রাহিম

13

বিকল্প 1: এই লাইনটি ~ / .zshrc এ যুক্ত করুন:

export "PATH=$HOME/pear/bin:$PATH"

এর পরে source ~/.zshrcআপনার পরিবর্তনগুলি প্রভাবিত করতে বা এই উইন্ডোটি বন্ধ করে একটি নতুন খোলার জন্য আপনাকে চালনা করতে হবে

বিকল্প 2: কেবলমাত্র টার্মিনাল উইন্ডো সেশনে এই পথটি যুক্ত করতে টার্মিনাল কনসোলের অভ্যন্তরে এটি সম্পাদন করুন। আপনি উইন্ডো / সেশনটি বন্ধ করলে এটি হারিয়ে যাবে।


৫ বছর আগে পোস্ট করা একই উত্তর থেকে এই উত্তরটি কীভাবে আলাদা তা কী আপনি ব্যাখ্যা করতে পারেন ?
ফ্রাঙ্কলিন ইউ

এই উত্তরে এটি বলা হয় না যে আপনাকে ফাইলের কোডের এই লাইনটি যুক্ত করতে হবে, আপনি যদি এটি চালান তবে এটি কেবল বর্তমান উইন্ডোতে পরিবর্তিত হবে এবং এটি মূল উত্তরে ব্যাখ্যা করা হবে না
দিমিতর

13
  1. ~ / .Zshrc এ যোগ করা পথ

    sudo vi ~/.zshrc

    নতুন পথ যুক্ত করুন

    export PATH="$PATH:[NEW_DIRECTORY]/bin"
  2. আপডেট ~ / .zshrc

    সংরক্ষণ করুন ~ / .zshrc

    source ~/.zshrc

  3. पथ পরীক্ষা করুন

    echo $PATH


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