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.