zsh কনফিগার - এক্সপোর্ট করতে হবে নাকি এক্সপোর্ট করতে হবে না?


23

আমার মধ্যে ভেরিয়েবল সেট করার সময় ~/.zshrcআমি হয় ব্যবহার করতে পারিexport

export PATH=/some/path

অথবা না

PATH=/some/path

এগুলি কীভাবে আলাদা হয় এবং কোনটি আমার ব্যবহার করা উচিত?


পরিবেশগত ভেরিয়েবলগুলি যা অ-ইন্টারেক্টিভ শেল দ্বারাও ব্যবহৃত হয় (যেমন আপনি লিখেছেন একটি শেল স্ক্রিপ্ট) প্রবেশ করা উচিত .zshenv।
— ফ্রান্সিসকো

~/.zshenvলগইন শেলগুলি দ্বারা কি উত্সাহিত করা হয়? করা উচিত PATHসেখানে সংজ্ঞায়িত করা?
— জর্ডেলভার

1
PATHসম্ভবত কোনও ভেরিয়েবলের সর্বোত্তম উদাহরণ যা ভিতরে সংজ্ঞায়িত করা উচিত ~/.zshenv, এই ফাইলটি কোনও zsh সেশন দ্বারা উত্সাহিত হয় (যদি না আপনি এটি বন্ধ করার জন্য কিছু বিকল্প ব্যবহার না করেন)। দেখুন man zshএকটি পর্যালোচনা যার ফাইল sourced পান এবং যা যাতে।
— ফ্রান্সিসকো

ঠিক আছে, ধন্যবাদ @ ফ্রেঞ্চিসকো আমি ম্যান পৃষ্ঠাটি পড়ব।
— জর্ডেলভার

উত্তর:


21

আপনি যদি ভের দেখতে zsh থেকে প্রোগ্রামগুলি চালনা করতে চান তবে তা রফতানি করুন।
পথের জন্য, আপনি সম্ভবত রফতানি করতে চান। আপনি সম্ভবত তার
পরিবর্তে export PATH=/some/pathচান export PATH="$PATH:/some/path", যদি না আপনি সিস্টেমের পূর্ব নির্ধারিত পথটি সম্পূর্ণরূপে সাফ করার পরিকল্পনা করেন।


ধন্যবাদ দারুণ। আমি এখন রফতানিটিকে সাধারণ নিয়ম হিসাবে ব্যবহার করব।
— জর্ডেলভার

21

ক্ষয় ইতিমধ্যে আপনার নির্দিষ্ট প্রশ্নের উত্তর দিয়েছে। তবে এটি একটি zshপ্রশ্ন এবং সম্পর্কে PATH। সুতরাং এখানে অন্য একটি বিষয়: মান ভেরিয়েবল পাশাপাশি $PATH, এছাড়াও আছে $path, যা একটি অ্যারে। এখানে আপনি পার্থক্যটি দেখতে পাচ্ছেন (কলোন না না ...):

$ print $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
$print $path
/bin /usr/bin /usr/local/bin /usr/X11R6/bin

দুটি রূপই স্বয়ংক্রিয়ভাবে সিঙ্কে রাখা হয়। সুতরাং, একটি অ্যারে ব্যবহার করে কি সুবিধা?

  • পরবর্তীটি আপনি typeset -U path"প্রতিটি সদৃশ মানের প্রথম উপস্থিতি রাখুন" (থেকে man zshbuiltins) এর মাধ্যমে ঘোষণা করতে পারেন । এর অর্থ এটি আপনার পথটিকে পরিষ্কার রাখে, এমনকি আপনি যদি ক্রমাগত উত্স উত্পন্ন করেন ~/.zshrc(কারণ আপনি এটি বা যে কোনও কিছু পরিবর্তন করেছেন) এবং বারবার একই মানগুলির সাথে বিশৃঙ্খলা না করে।
  • আপনি path+=(/new/path)আপনার রাস্তায় একটি নতুন ডিরেক্টরি যুক্ত করতে ব্যবহার করতে পারেন । কোনও উপাদান মুছে ফেলার জন্য আপনাকে কয়েকটি কৌশল ব্যবহার করতে হবে, দেখুন /programming//q/3435355/2037712 বা http://www.zsh.org/mla/users//2005/msg01132.html
  • আপনি সহজেই PATH এর মাধ্যমে উপাদানগুলির উপর লুপ করতে পারেন for i ($path) { print $i # or do something else }

অবশেষে, আমার কনফিগারেশনের একটি অংশ এখানে দেওয়া হয়েছে:

typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH

আপনাকে ধন্যবাদ, এটি আসলে একটি ফলোআপ প্রশ্ন ছিল। আমি pathবরং আমার পথটি পরিচালনা করার পরিবর্তে ব্যবহার করব PATH।
— জর্ডেলভার

1
আমি ইতিমধ্যে ভয় পেয়েছি যে আমি ওটি হয়েছি শুনে শুনে খুশি হয়েছি। BTW। আরেকটি সুবিধা যা আমি ভুলে গিয়েছিলাম: আপনি সহজেই উপাদানগুলির সাথে লুপ করতে পারেন for i ($path) { print $i # or do something else }।
— এমপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.