Zsh এবং ব্যাশের মধ্যে উপমা এবং PATH সেটিং ভাগ করুন


24

আমি সাধারণত শেলটি ব্যবহার করি zsh। আমি যেমন কিছু প্রোগ্রাম রঙ সক্রিয় করতে বিভিন্ন alias লেখা আছে lsএবং grep। আমি আমার কাস্টম পাথও সেট করেছি যাতে আমি অ-মানক স্থানে প্রোগ্রামগুলি চালাতে পারি (যেমন হিসাবে ~/bin/)।

আমি root এর শেল পরিবর্তন করবে না করতে zsh, কিন্তু আমি এই সেটিংটি ভাগ করার জন্য, যাতে মূল ভাল হিসাবে এটি থাকতে পারে চাই। আমি জানতে পারি যে zshএটি সোর্সিং নয় /etc/profile। আমি এটি উত্স করতে পারি /etc/zsh/zprofile, তবে আমি আরও কিছু "সঠিক" উপায় চাই।

উত্তর:


16

আমি একটি ফাইল তৈরি করবো /etc/commonprofileএবং উভয় এটা উৎস /etc/profileএবং /etc/zsh/zprofile। এই আপনি সাধারণ সেটিংস ভাগ এবং এখনও ব্যবহার করার সুযোগ দেয় bashযথাক্রমে zshনির্দিষ্ট সেটিংস এবং বাক্য গঠন /etc/profileযথাক্রমে zprofile


অন্যান্য উত্তরের উত্তরের মধ্যে আমি মনে করি এটি আমার সেরা, তুলনামূলক সহজ এবং "পরিষ্কার"
ফোনেহেহে

"উত্স এটি" বলতে কী বোঝ?
হ্লুং

@ হেলং শেল প্রোফাইলের স্পষ্টতা লোড করার জন্য, এখানে 'উত্স /পাথ / টো / শেল_প্রোফাইল' আসে। 'উত্স' এ ম্যান পৃষ্ঠা দেখুন।
Itachi

17

Zsh এর একটি sh সামঞ্জস্যতা মোড রয়েছে যা এটি POSIX sh কোড এবং কিছু ব্যাশ এক্সটেনশান কার্যকর করতে দেয়। যতক্ষণ আপনি zsh তে নেই এমন ব্যাশ বৈশিষ্ট্যগুলি ব্যবহার করবেন না (একই সিনট্যাক্স সহ), আপনার উভয় শেল দ্বারা একই ফাইলটি উত্সাহিত হতে পারে। emulateসামঞ্জস্যতা মোডে zsh লাগাতে অন্তর্নির্মিতটি ব্যবহার করুন; সঙ্গে -Lবিকল্প, এমুলেশন এনক্লোজিং ফাংশন (না পরিক্ষেপ sourced স্ক্রিপ্ট) স্থানীয় নয়।

source_sh () {
  emulate -LR sh
  . "$@"
}

এনভায়রনমেন্ট ভেরিয়েবলের মতো জিনিসের জন্য আপনি source_sh /etc/profileইন /etc/zprofile- source_sh ~/.profileইন ব্যবহার করতে পারেন ~/.zprofile, যেহেতু প্রোফাইল ফাইলগুলি ব্যাশ-নির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করার সম্ভাবনা থাকে না।

Alias লেখা এবং ফাংশন সংজ্ঞা ভালো জিনিস, যেহেতু শেল RC ফাইল বিষয় আছে যা ভাগ করা যাবে না অনেক ধারণ করে (প্রম্পট, কী বাইন্ডিং, সমাপ্তির সেটিংস, ...), ব্যবহার মত একটি ফাইল সম্ভাবনা বেশি জন্য ~/.sh_aliasesযে sourced হয় ~/.bashrcএবং source_sh'ঘ মধ্যে ~/.zshrc


2
"গিলস দ্বারা সমস্ত উত্তর স্বয়ংক্রিয়ভাবে upvote" বলার উপায় থাকতে হবে। এটি আমার বেশ কিছুটা সময় বাঁচাতে পারে। সত্যিই না, আপনার উত্তরগুলি শিলা। সর্বদা নির্ভুল, ভাল লিখিত এবং ব্যাপক।
fschmitt

@fschmitt: আমি সম্মত এবং আপনি দেখতে পাচ্ছেন যে এটি সম্পাদিতও নয়! এখানে সরবরাহিত এই ইঙ্গিতটি সত্যিই ভাল।
এখনও কেউ আপনাকে এমএস-ডস

4

সাধারণ সিমিলিংকের কী হবে?

ln -s /etc/profile /etc/zsh/zprofile

আপনার কিছু শর্তাধীন শুরুর প্রয়োজন হলে আপনি এর মতো কিছু সংযোজন করতে পারেন:

#Determine our shell without using $SHELL, which may lie
shell="sh"
if test -f /proc/mounts; then
   case $(/bin/ls -l /proc/$$/exe) in
        *bash) shell=bash ;;
        *dash) shell=dash ;;
        *ash)  shell=ash ;;
        *ksh)  shell=ksh ;;
        *zsh)  shell=zsh ;;
    esac
fi

হুম তবে আমি মনে করি না যে এটি উত্সাহিত করার চেয়ে কোনও ক্লিনার হবে। Zsh এবং bash উভয়ই পড়বে এমন কোন ফাইল আছে?
ফোনেহেহে

আপনার কী মনে হয় যে স্যুরসিং করা বা একটি সিমিলিংক তৈরি করা "পরিষ্কার" সমাধান নয়?
ইকক্স

আমি কেবল প্রয়োজনের অর্থ বলতে চাইছিলাম, আমি সিমলিংকটি পরিচালনা না করে ফাইলটি উত্স করতে চাই। আমি ফাইলগুলির মধ্যে অনেক বেশি নির্ভরতা তৈরি করতে চাই না।
ফুনেহে

1
একটি আরো পোর্টেবল বিকল্প /bin/ls -l /proc/$$/exeনেই ps -o comm= -p $$। এটি পুরোপুরি নির্ভরযোগ্য নয় কারণ কিছু শাঁস তাদের কীভাবে ডাকা হয়েছিল তার উপর নির্ভর করে আলাদা আচরণ করে; কেবল পরীক্ষার অনুশীলনে $0মধ্যে .profileএকটি উন্নততর ইঙ্গিত হতে পারে। কিন্তু শাঁস যে দরকারী বৈশিষ্ট্য (ব্যাশ, ksh, zsh) অফার কেবল স্বীকৃত হতে পারে (এবং তাদের সংস্করণ চিহ্নিত, যা একটি বড় প্লাস) কিছু ভেরিয়েবল পরীক্ষার দ্বারা: $BASH, $BASH_VERSION, $BASH_VERSINFO; $KSH_VERSION, ${.sh.version}; $ZSH_VERSION
গিলস 'তাই-দুষ্ট হওয়া বন্ধ করুন'

ইকক্স, আপনার কেস স্টেটমেন্টটি সঠিকভাবে zsh4 সনাক্ত করতে পারে না # শেলটি ব্যবহার না করেই আমাদের শেলটি নির্ধারণ করুন, যা পরীক্ষা -f / proc / মাউন্টগুলি থাকলে শেল = "sh" থাকতে পারে; তারপরে কেস $ (/ bin / ls -l / proc / exe / exe) বাশে) শেল = বাশ ;; * ড্যাশ) শেল = ড্যাশ ;; * ছাই) শেল = ছাই ;; * ksh) শেল = ksh ;; * zsh ) শেল = zsh ;; # ম্যাচগুলি zsh4 এসাক ফাই
ব্রায়ান হান্ট

0

ভেরিয়েবলের ক্ষেত্রে, আমার ধারণা আছে যে আপনি মডিউল এবং মডিউলফাইলে হারিয়েছেন [1]। একবার আপনি এটি শুরু করার পরে, একটি একক মডিউল ফাইলের সুবিধার্থে সমস্ত শেল (ইনক্লাব। বাশ & zsh), পাইথন, পারল এবং আরও বেশি পরিবেশের জন্য সাধারণ প্রোফাইলগুলি তৈরি করা সহজ হবে।

এলিয়াসগুলি একইভাবে সংজ্ঞায়িত করাও সম্ভব; তবে, আপনি শীঘ্রই দেখতে পাবেন যে পরের শেলগুলির মধ্যে উপাধি খুব উত্তমভাবে উত্তরাধিকার সূত্রে প্রাপ্ত হয় না এবং তার জন্য কাজের পরিমাণ প্রয়োজন হতে পারে।

[1] http://en.wikedia.org/wiki/En পরিবেশ_Modules_( সফটওয়্যার)

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