আমি যখন জেডএসএইচ ব্যবহার করি, তখন আমি কীভাবে /etc/profile.d এ PATH সেট করব?


22

আমি zshআমার শেল হিসাবে ব্যবহার করছি , এবং আমি আমার পরিবেশকে কনফিগার করার চেষ্টা করছি।

আমি সাধারণত $JAVA_HOMEএকটি ফাইল তৈরি করে আমার পরিবর্তনশীল সংজ্ঞায়িত করি :

/etc/profile.d/java.sh

নিম্নলিখিত বিষয়বস্তু সহ

export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

তারপরে আমি লগআউট করে ফিরে এসেছি এবং এটি সব কাজ করে তবে কিছু কারণে PATHভেরিয়েবল সেট করা হয়নি। এটি স্বীকৃত JAVA_HOME, তবে নতুন নয় PATH, এই টার্মিনাল স্নিপেটটি দেখুন:

~  echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

এবং আমি এটি jvm কমান্ড তৈরি করার চেষ্টা করে নিশ্চিত করেছিলাম

~  java -version
zsh: command not found: java

PATHঅন্তর্ভুক্ত নয় $JAVA_HOMEযেমন উচিত। আমার কি অন্য কিছু পরীক্ষা করা উচিত?

আমি পরীক্ষা করে দেখেছি যে আমি যদি চালিয়ে যাই:

source /etc/profile.d/java.sh

এটি সমস্ত সঠিকভাবে চলে এবং আমার ভেরিয়েবলগুলি যেমনটি করা উচিত তেমন সেট হয়ে /etc/profile.dযায় তবে স্ক্রিপ্টগুলি স্বয়ংক্রিয়ভাবে চালিত হওয়া উচিত নয় ?


আপনি কি ~/.profileপরিবর্তে সেখানে ভেরিয়েবলগুলি সম্পাদনা এবং স্থাপনের চেষ্টা করেছেন ? এটি PATHঅন্য কোথাও ওভাররাইট করা হতে পারে /etc/profile.d/
saiarcot895

উত্তর:


27

আমার দৃষ্টিকোণ থেকে, সর্বোত্তম উপায় হ'ল ~/.zshrcফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করা (যদি আপনার ইতিমধ্যে এটি না থাকে তবে এটি তৈরি করুন):

if [ -d "/path/to/jdk" ] ; then
    export PATH="/path/to/jdk/bin:$PATH"
fi

তারপরে আপনার পুনরায় চালু করুন zsh, বা কেবল চালান source ~/.zshrcএবং তারপরে আপনার প্যাথটি আপনার ইচ্ছা অনুযায়ী হওয়া উচিত।

অথবা, আপনি যদি এই পরিবর্তনটি সিস্টেম-প্রশস্ত করতে চান তবে /etc/zsh/zshenvফাইলের শেষের দিকে আগের কোডটি যুক্ত করুন।

তবে কোনও ক্ষেত্রে /etc/profile.dস্বয়ংক্রিয়ভাবে স্ক্রিপ্টগুলি চালানোর জন্য ব্যবহার করবেন না zsh। এই ডিরেক্টরিটি কেবল bashশেলের জন্য কার্যকর, zshআপনার ক্ষেত্রে যেমন নয় । এটি বুঝতে, /etc/profileফাইলটি খুলুন , যা কোনও ব্যাশ ইনিশিয়ালাইজেশন ফাইল এবং কোনও ক্ষেত্রে zsh প্রারম্ভিকরণ ফাইল নয় এবং আপনি ফাইলটির শেষে কোথাও দেখতে পাবেন:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

সুতরাং, /etc/profile.dডিরেক্টরি থেকে আপনার স্ক্রিপ্টগুলি zshকেবলমাত্র আপনি যদি zsh প্রারম্ভিকরণ ফাইলে পূর্ববর্তী কোডটি যুক্ত করেন তবে /etc/zsh/zprofileউদাহরণস্বরূপ, বা ফাইলের উত্স /etc/profileহিসাবে যুক্ত /etc/zsh/zprofileহবে।


4
সম্ভবত এর ~/.zprofileচেয়ে ভাল হতে পারে ~/.zshrc
মুড়ু

3

আমি দেখতে পেয়েছি যে সমস্ত কিছু এক .zshenvফাইলে রাখা দ্রুত পরিচালনা করা শক্ত হয়ে যায়। আমি oh-my-sh ইনস্টল করার পরামর্শ দিই এবং তারপরে বিভিন্ন কাস্টমাইজেশন (এনভ ভার্স, ফাংশন) .oh-my-sh/custom/পৃথক .zshফাইল হিসাবে ডিরেক্টরিতে রাখি ।

আমি আরও আবিষ্কার করেছি যে এই পদ্ধতিটি ত্রুটিহীনভাবে কাজ করে যখন মেশিনে সশ করার সময় এনভির ভেরিয়েবলগুলি যেমন সংশোধন করা হয় PATH। এছাড়াও এটি কাস্টমাইজেশনগুলি ব্যাক আপ এবং সিঙ্কে রাখার জন্য ভিসিএসের সাথে একসাথে দুর্দান্ত কাজ করে ।


ওহ আমার zsh ফ্রেমওয়ার্ক ব্যবহার করে, আপনি ssh অ্যাক্সেসের জন্য কোনও আইপি অ্যাড্রেস (রিমোট সার্ভার) দিয়ে একটি ভেরিয়েবলটি কোথায় রাখবেন? আমার গিটের জন্য আইপি এবং সার্ভারে একটি লগইন স্ক্রিপ্ট দরকার।
টিমো

1
হুঁ। আপনি কি বলতে চাইছেন পুরোপুরি নিশ্চিত না। আমি ssh~/.ssh/config
dvim

আমি ব্যক্তিগতভাবে গ্রহণযোগ্য উত্তরের এই পদ্ধতির পছন্দ করি কারণ আমি ভিসিএস ব্যবহার করার সুবিধা পছন্দ করি এবং জেডএসএইচের জন্য "কাস্টম" ফোল্ডারটি এই জাতীয় সামগ্রীর জন্য আদর্শ জায়গা।
এরিক ব্রাউন

1

যেহেতু JAVA_HOMEসেট করা আছে, আপনি নিশ্চিত করেছেন যে এই স্ক্রিপ্টগুলি স্বয়ংক্রিয়ভাবে উত্সাহিত হয়েছে, তাই না?

একমাত্র যৌক্তিক ব্যাখ্যা হ'ল এটি PATHপরে কোনওভাবে সেট করা আছে। এটি মূলত পিএএম দ্বারা সেট করা উচিত যা পড়তে পারে /etc/environmentএবং যতদূর আমি জানি যে /etc/profile.d/*.shফাইলগুলি সস করার আগে ঘটে happens সম্ভবত zsh এই সম্মানের সাথে বাশের তুলনায় আলাদাভাবে কাজ করে।


0

আপডেটগুলি চালনার পরে কেবল স্থানীয়ভাবে এই ইস্যুটিতে ছড়িয়ে পড়ে। মূল সমস্যাটি দেখে মনে হচ্ছে ড্রুশ পিডিএও অন্তর্ভুক্ত পিএইচপি এর একটি লাইট কপি কোথায় পাবে তা জানে না। ভাগ্যক্রমে এটি পরিবেশের পরিবর্তনশীল হিসাবে এই পথটি স্ট্যাশিং সমর্থন করে, তাই আমি কমান্ডলাইনে এটি করেছি:

export DRUSH_PHP="/Applications/MAMP/bin/php/php5.4.39/bin/php"

এটি সমস্যাটি স্থির করে দিয়েছিল তাই আমি .zshrc সম্পাদনা করে ফাইলটিতে যুক্ত করেছি, সমস্যা সমাধান হয়েছে।


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