কোথায় zsh এ $ PATH ভেরিয়েবল assertions স্থাপন করবেন?


110

আমি ভালবাসি zsh, তবে আমি নিশ্চিত নই যে আমার $PATHএবং অন্যান্য পরিবর্তনশীল বক্তব্যগুলি কোথায় রাখব ? আমি দেখতে পাচ্ছি যে এগুলি ফাইলগুলির মধ্যে ছড়িয়ে ছিটিয়ে রয়েছে .zshrc .zprofile .bashrc .bash_profileএবং কখনও কখনও দ্বিগুণ হয়।

আমি বুঝতে পারি যে ভিতরে কিছু থাকার bashফাইল অনেক ইন্দ্রিয় হিসাবে আমি ব্যবহার করছি এইজন্য দেখা যায় না zsh, কিন্তু ঠিক কোথায় আমি আমার স্থাপন করা উচিত rvm, python, nodeআমার কাছে ইত্যাদি সংযোজন $PATH?

সেখানে একটি নির্দিষ্ট ফাইল আমি ব্যবহার করা উচিত (যেমন হয় .zshenvযা নেই না বর্তমানে আমার ইনস্টলেশন মধ্যে উপস্থিত), বেশী আমি বর্তমানে ব্যবহার করছি এক, অথবা এটি এমনকি কোন ব্যাপার?

উত্তর:


148

tl; dr সংস্করণ: ব্যবহার করুন ~/.zshrc

এবং এর মধ্যে পার্থক্যগুলি বুঝতে ম্যান পৃষ্ঠাটি পড়ুন :

~/.zshrc, ~/.zshenvএবং ~/.zprofile


আমার মন্তব্য সম্পর্কে

আমার মন্তব্য উত্তর সংযুক্ত keV দিলেন , আমি বললাম,

এটি ভুল বলে মনে হচ্ছে - / etc / প্রোফাইলটি আমি খুঁজে পেতে পারে এমন কোনও zsh ডকুমেন্টেশনে তালিকাভুক্ত নয়।

এটি আংশিকভাবে ভুল হিসাবে প্রমাণিত: এটি দ্বারা উত্সাহিত /etc/profile হতে পারে zshতবে এটি কেবল তখনই ঘটে যখন zsh"হিসাবে shবা অনুরোধ করা হয় ksh"; এই সামঞ্জস্যতা মোডে:

সাধারণ zsh স্টার্টআপ / শাটডাউন স্ক্রিপ্টগুলি কার্যকর করা হয় না। লগইন শেলস উত্স / ইত্যাদি / প্রোফাইলের পরে $ হোম /। প্রোফাইল। যদি ENV এনভায়রনমেন্ট ভেরিয়েবলটি অনুরোধে সেট করা থাকে তবে sc ENV প্রোফাইল স্ক্রিপ্টগুলির পরে উত্সাহিত হয়। ENV এর মানটি প্যাথনাম হিসাবে ব্যাখ্যা করার আগে প্যারামিটার সম্প্রসারণ, কমান্ড প্রতিস্থাপন এবং পাটিগণিতের বিস্তারের দ্বারা সাপেক্ষে। [ ম্যান জ্যাশাল, "সামঞ্জস্যতা" ]।

ArchWiki ZSH লিংক বলেছেন:

লগইন-এ, জেডএস নিম্নলিখিত ফাইলগুলিকে এই ক্রমে উত্স দেয়:
/ ইত্যাদি / প্রোফাইল
এই ফাইলটি লগইন করার পরে সমস্ত বোর্ন-সামঞ্জস্যপূর্ণ শেল দ্বারা উত্সাহিত করা হয়

এই implys যে /etc/profileহয় সবসময় পড়া দ্বারা zshলগইন এ - আমি আর্চ লিনাক্স প্রকল্পের সঙ্গে কোনো অভিজ্ঞতা না থাকে; উইকি যে বিতরণের জন্য সঠিক হতে পারে, কিন্তু এটা না সাধারণত সঠিক। তথ্য হল zsh ম্যানুয়াল পৃষ্ঠার তুলনায় ভুল, এবং OS X এ zsh করার জন্য (মধ্যে পাথ প্রয়োগ বলে মনে হচ্ছে না $PATHসেট /etc/profileআমার zsh সেশন এটি তৈরি করতে পারবেন না)।



প্রশ্নের সমাধান করতে:

আমার আরভিএম, পাইথন, নোড ইত্যাদিকে আমার $ রাস্তায় ঠিক কোথায় রাখব?

সাধারণত, আমি আমার রফতানি করা হবে $PATHথেকে ~/.zshrc, কিন্তু এটি মূল্যবানের একটি পঠিত থাকার zshall man পৃষ্ঠা, নির্দিষ্টভাবে "শাটডাউন / স্টার্টআপ ফাইল" অধ্যায় - ~/.zshrcজন্য পড়া হয় ইন্টারেক্টিভ শেল, যা বা আপনার প্রয়োজন অনুসারে নাও হতে পারে পারে - যদি আপনি চান তাহলে $PATHজন্য zshআপনার দ্বারা প্রেরিত প্রতিটি শেল (উভয়ই interactiveনয় loginএবং উভয়ই নয় এবং ইত্যাদি), তারপরে ~/.zshenvএকটি ভাল বিকল্প।

আমার কি এমন একটি নির্দিষ্ট ফাইল ব্যবহার করা উচিত (যেমন .zshhenv যা বর্তমানে আমার ইনস্টলেশনটিতে বিদ্যমান নেই), বর্তমানে আমি যে ফাইলগুলি ব্যবহার করছি তার মধ্যে একটিও এটির কী গুরুত্বপূর্ণ?

স্টার্টআপে manপ্রচুর ফাইল পড়ে আছে (সংযুক্ত পৃষ্ঠাগুলি পরীক্ষা করুন ), এবং এর একটি কারণ রয়েছে - প্রতিটি ফাইলের নির্দিষ্ট জায়গা রয়েছে (প্রতিটি ব্যবহারকারীর জন্য সেটিংস, ব্যবহারকারী-নির্দিষ্ট জন্য সেটিংস, লগইন শেলগুলির জন্য সেটিংস, প্রতিটি শেলের জন্য সেটিংস, ইত্যাদি)। বিদ্যমান
না থাকার বিষয়ে চিন্তা করবেন না ~/.zshenv- আপনার যদি এটির প্রয়োজন হয় তবে এটি তৈরি করুন এবং এটি পড়া হবে।

.bashrcএবং .bash_profileএগুলি দ্বারা পড়া হয় নাzsh , যদি না আপনি এগুলিকে স্পষ্ট করে উত্স থেকে ~/.zshrcবা অনুরূপ করেন; মধ্যে বাক্য গঠন bashএবং zshহয় না সবসময় সামঞ্জস্যপূর্ণ। উভয় .bashrcএবং সেটিংসের .bash_profileজন্য ডিজাইন করা হয়েছে, bashসেটিংস নয় zsh


3
সম্পূর্ণ উত্তর সিমেন্ট চেয়ে আপনার জন্য ধন্যবাদ। স্ট্রেঞ্জ য়ে তুমি বলবে .bashrcএবং .bash_profileপড়তে হয় না zshহিসাবে আমি বর্তমানে আমার আছে rvmছাড়াও $PATHমধ্যে .bashrc, আর আমার pythonসংযোজন .bash_profile, এবং উভয় শুধু জরিমানা যোগ করা হচ্ছে। যাই হোক না কেন, আমি আমার সমস্ত $PATHরফতানি সেখানে স্থানান্তর করতে যাচ্ছি ~/.zshrcযেহেতু আমার সমস্ত অন্যান্য zshকনফিগারেশন সেখানে রাখা আছে। আমাকে স্বীকার করতে হবে, আমি বিভিন্ন ধরণের শাঁসের সাথে খুব বেশি পরিচিত নই। আপনার পোস্ট করা লিঙ্কগুলি পড়া থেকে, আমি অনুমান করছি যে আমি একটি ইন্টারেক্টিভ শেল ব্যবহার করি, তবে আমি নিশ্চিত হয়ে আরও পড়ব ... আবারও ধন্যবাদ!
স্টেফমিখাইল

30

এখানে স্টার্টআপ / শাটডাউন ফাইল বিভাগের অধীনে zsh ম্যান পৃষ্ঠাগুলি থেকে ডক্স রয়েছে।

   Commands  are  first  read from /etc/zshenv this cannot be overridden.
   Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the
   former  affects all startup files, while the second only affects global
   startup files (those shown here with an path starting with  a  /).   If
   one  of  the  options  is  unset  at  any point, any subsequent startup
   file(s) of the corresponding type will not be read.  It is also  possi-
   ble  for  a  file  in  $ZDOTDIR  to  re-enable GLOBAL_RCS. Both RCS and
   GLOBAL_RCS are set by default.

   Commands are then read from $ZDOTDIR/.zshenv.  If the shell is a  login
   shell,  commands  are  read from /etc/zprofile and then $ZDOTDIR/.zpro-
   file.  Then, if the  shell  is  interactive,  commands  are  read  from
   /etc/zshrc  and then $ZDOTDIR/.zshrc.  Finally, if the shell is a login
   shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.

এটি থেকে আমরা দেখতে পাই যে অর্ডার ফাইলগুলি পড়া হয়:

/etc/zshenv    # Read for every shell
~/.zshenv      # Read for every shell except ones started with -f
/etc/zprofile  # Global config for login shells, read before zshrc
~/.zprofile    # User config for login shells
/etc/zshrc     # Global config for interactive shells
~/.zshrc       # User config for interactive shells
/etc/zlogin    # Global config for login shells, read after zshrc
~/.zlogin      # User config for login shells
~/.zlogout     # User config for login shells, read upon logout
/etc/zlogout   # Global config for login shells, read after user logout file

আপনি এখানে আরও তথ্য পেতে পারেন ।


18

আমার অনুরূপ সমস্যা ছিল (বাশ টার্মিনাল কমান্ডটি সঠিকভাবে কাজ করছিল তবে zsh কমান্ড ত্রুটি খুঁজে পাওয়া যায় নি)

সমাধান:


আপনি আগে whatever / .bashrc এ যা যা আটকালেন কেবল তা এখানে আটকান:

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