আপনি ওহ-মাই-জেডএস (এবং zsh) আনইনস্টল না করে কীভাবে "অক্ষম" করবেন?


16

আমি zsh এবং ওহ-মাই- zsh সহ নতুন দেব পরিবেশের চেষ্টা করছিলাম। এখন যেহেতু আমি ওহ-মাই-জেডএস ইনস্টল করেছি, এটি আমার টার্মিনালগুলিতে ডিফল্টরূপে শুরু হয় (আইটার্ম 2 এবং টার্মিনাল) সর্বদা zsh এবং ওহ-মাই- zsh এর সেটিংস দিয়ে শুরু হয়। আমি ভাবছিলাম যে ওহ-মাই-জেডএসটি আনইনস্টল না করে ওহ-মাই-জেডএস-এর সাথে zsh এবং এর সেটআপটি "অক্ষম" করা বা বন্ধ করা কি সম্ভব? এগুলি কীভাবে আবার চালু করবেন তা জেনেও ভাল লাগবে।

বর্তমানে, আমার টার্মিনালগুলি স্বয়ংক্রিয়ভাবে zsh এ চলে যায় (আমার মনে হয়) এবং ও-মাই-জেডএস স্বয়ংক্রিয়ভাবে ব্যবহার করুন। আমি এর উপর আরও নিয়ন্ত্রণ রাখতে চাই এবং আমার উভয়ই নিয়ন্ত্রণ করতে সক্ষম হয়েছি, যখন জেডএসটি ব্যবহৃত হচ্ছে এবং যখন ওহ-মাই-জেডএস বৈশিষ্ট্যগুলি ব্যবহৃত হচ্ছে।

আমি জানতে আগ্রহী একটি জিনিস হ'ল, টার্মিনাল অ্যাপ্লিকেশনগুলি কীভাবে জানবে যে শেলটি শুরুতে চলতে শুরু করবে। যে খুব নিয়ন্ত্রণ করতে সক্ষম হতে হবে!

আপনি আমাকে যে প্রতিটি আদেশ দেন তার "কেন" আপনি যতটা ব্যাখ্যা করতে পারেন, তা যদি কার্যকর হয়! :)


আমি ওএস এক্সে রয়েছি that বিষয়টি নিশ্চিত কিনা তা নিশ্চিত নই, তবে আমার নিজের উত্তরের চেয়ে আরও বেশি সাধারণ ইউনিক্স পরিবেশের জন্য আরও বেশি প্রযোজ্য উত্তরগুলি পছন্দ করতে চাই।


আপনি ব্যবহার বন্ধ করতে চান zsh? বা oh-my-zsh? কোনটি?
strugee

উভয় এবং উভয়। অর্থাত্ আমি যখন zsh এবং ওহ-আমার- zsh ব্যবহার করছি তখন আমি উভয়ই নিয়ন্ত্রণ করতে সক্ষম হতে চাই
চার্লি পার্কার

উত্তর:


19

আপনার প্রশ্নের বাক্যটি দ্ব্যর্থক, সুতরাং আপনি বলতে চাইছেন যে আপনি ব্যবহার বন্ধ zshকরতে চান বা আপনি ব্যবহার বন্ধ করতে চান তা আমি বলতে পারছি না oh-my-zsh। আমি উভয় আবরণ করব।

অক্ষম করা হচ্ছে zsh

কেবল চালান chshএবং আপনি আগে যে শেল ব্যবহার করতেন তা নির্বাচন করুন। আপনি যদি আগে জানতেন না যে শেলটি আপনি আগে ব্যবহার করছিলেন তবে এটি অবশ্যই অবশ্যই bash। এই কমান্ডটি আপনার ব্যবহারকারীর সাথে সম্পর্কিত "লগইন শেল" পরিবর্তন করে। মূলত, এটি আপনার ডিফল্ট শেল পরিবর্তন করে।

পরিবর্তনগুলি কার্যকর করার জন্য আপনাকে একটি নতুন টার্মিনাল উইন্ডো খুলতে হবে। যদি এটি কাজ না করে তবে আপনার পরিবেশটি পুনরায় চালু করতে আপনাকে লগ আউট এবং আবার লগ ইন করতে হবে।

কেবল অক্ষম করা হচ্ছে oh-my-zsh

  1. ~/.zshrc.pre-oh-my-zshউপস্থিত কিনা তা পরীক্ষা করুন । এটা সম্ভবত আছে। (যখন এই ফাইলটি তৈরি করা হয়েছে হবে oh-my-zshইনস্টলেশন স্ক্রিপ্ট আপনার পূর্ববর্তী সরানো .zshrcপথ থেকে। .zshrcএকটি প্রারম্ভকালে ফাইল zsh, অনুরূপ .bashrcজন্য bash।)
  2. যদি এটি হয়, না mv ~/.zshrc ~/.zshrc.oh-my-zsh। এটি তৈরির oh-my-zshউপায়টিকে .zshrcবাইরে রাখবে, তাই আমরা কাজটি করে মূলটিকে পুনরুদ্ধার করতে পারি mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc
  3. যদি এটি বিদ্যমান না থাকে তবে ~/.zshrcএকটি পাঠ্য সম্পাদককে খুলুন open যে লাইনটি বলেছে source $ZSH/.oh-my-zshতা সন্ধান করুন এবং হয় এটির মন্তব্য বা এটি সরিয়ে ফেলুন। এটি এর সূচনাটি অক্ষম করবে oh-my-zsh

পরিবর্তনগুলি কার্যকর করতে আপনার শেলটি পুনরায় চালু করতে হবে।


আমি আমার কথাটি সম্পর্কে ক্ষমা চাইছি। আমি বিশ্বাস করি আমি এটি স্পষ্ট করে দিয়েছি। এটা কি এখন পরিষ্কার? ধন্যবাদ বিটিডব্লিউ।
চার্লি পার্কার

@ চার্লিপার্কার হ্যাঁ, আমি অলস হয়ে যাচ্ছিলাম। আমি উত্তরটি প্রসারিত করব, সম্ভবত "কেন" এর কিছুটা ব্যাখ্যা করব।
strugee

1
@ চারলিপার্কার আপনি যদি খেয়াল না করেন তবে আমি এই উত্তরটি আপডেট করেছি। যদি কিছু উন্নতি করা যায় তবে আমাকে জানান।
strugee

4

জেডএসএইচ কনফিগারেশন স্যুইচিং

আপনি বিভিন্ন zsh কনফিগারেশন অবকাঠামো (OH-মাই-zsh, zprezto, ইত্যাদি) পরীক্ষা করতে চান, এবং তাদের মধ্যে সুইচ, আপনার সেরা বাজি জন্য সিম্বলিক লিংক ব্যবহার করছে ~/.zsh, ~/.zshrc, ~/.zlogin, ~/.zlogout, ~/.zprofile, এবং ~/.zshenv। দ্রুত স্যুইচিংয়ের জন্য সেই প্রতিলিঙ্কগুলি তৈরি করতে আপনি প্রতিটি কাঠামোর জন্য শেল স্ক্রিপ্ট তৈরি করতে চাইতে পারেন।

আপনার কাঠামোর কনফিগারেশনগুলিকে তাদের নিজস্ব ফোল্ডারে রাখুন। প্রতিটি কাঠামোর জন্য।

  • অন্যথায়, সম্ভব হলে নিজস্ব ফোল্ডারে ফ্রেমওয়ার্কটি ইনস্টল করুন
  • যদি ফ্রেমওয়ার্কটি ইনস্টলেশনটি বাধ্য করে ~/.zsh, তবে
    • বর্তমানটিকে ~/.zshপ্রথমে রক্ষা করুন । উভয় ক্ষেত্রেই
      • ~/.zshসিমিলিংক অপসারণ ; rm ~/.zsh, বা
      • ~/.zshফোল্ডারটি সরান ;mv ~/.zsh ~/.zsh.backup
    • ফ্রেমওয়ার্ক ইনস্টলার চালান।
    • ফ্রেমওয়ার্ক ফোল্ডারটিকে তার নিজস্ব ডিরেক্টরিতে সরান। যেমন mv ~/.zsh ~/.oh-my-zsh
  • প্রতিটি কাঠামোর জন্য পুনরাবৃত্তি।

একবার হয়ে গেলে, প্রতিটি কাঠামোর জন্য প্রয়োজনীয় সিমলিংক তৈরির জন্য একটি শেল স্ক্রিপ্ট তৈরি করুন। এখানে Zprezto জন্য একটি উদাহরণ, যেহেতু আমি ইতিমধ্যে এটি ব্যবহার করেছি।

$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zprezto
#!/bin/bash
SYMLINKS=".zsh .zshrc .zshlogin .zshlogout .zshprofile .zpreztorc .zshenv .zshrc"
CONFIG_HOME="$HOME/.zprezto"

# check for unexpected error conditions
for sym in $SYMLINKS; do
   # report an error and quit if $sym exists and is not a symlink
   [[ -e "$HOME/$sym" -a ! -h "$HOME/$sym" ]] && { echo "error:  '$HOME/$sym' is not a symlink!"; return 1; }
done

# now create the symlinks now that nothing should go wrong
for sym in $SYMLINKS; do
   # remove old symlink if it exists
   [[ -h "$HOME/$sym" ]] && rm -f "$HOME/$sym"
   # create new symlink
   ln -s "$CONFIG_HOME/$sym" "$HOME/$sym"
done

# uncomment next line to start a new zsh shell.  CAUTION: each call is a zsh shell inside a zsh shell.  Too many calls will put you in limbo :D
#/usr/bin/env zsh
EOF

$ chmod 700 ~/bin/use-zprezto

এই স্ক্রিপ্টটি মোটামুটি সহজ এবং এই সত্যের উপর নির্ভর করে যে আমার সমস্ত সিমলিংকগুলি একই ধাঁচের সাথে সংগঠিত। আপনি কপি ও পেস্ট করতে পারেন Remove এবং তৈরি symlinks থাকা ব্যক্তিগণ প্যাটার্ন অনুসরণ না লুপ পর লাইন।

একবার হয়ে গেলে, ~/bin/use-zprezto--sh ~/bin/use-whatever- ব্যবহার করুন zsh ফ্রেমওয়ার্কগুলির মধ্যে স্যুইচ করুন।

নোট করুন যে পরিবর্তনগুলি কেবলমাত্র নতুন zsh শেলগুলিতে কার্যকর হয়, বিদ্যমান শেলগুলি নয়।

শেল স্যুইচিং

এটি কিছুটা বিপজ্জনক, তবে আপনি যদি এদিকেই ঝুঁকে থাকেন তবে আপনি নিজের শেল কমান্ডের জন্য একটি সিমলিংক ব্যবহার করতে পারেন এবং সিমলিংকে আপনার ডিফল্ট শেল হিসাবে সেট করতে পারেন। তারপরে আপনি use-*নিজের ডিফল্ট শেলটি পরিবর্তন করতে উপরের স্ক্রিপ্ট পদ্ধতিটি অনুসরণ করতে পারেন ।

Zsh সহ একটি উদাহরণ হিসাবে ...

$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zsh
#!/bin/bash
# check for valid shell symlink
if [[ ! -h "$HOME/.shell" ]]; then
  echo "error: $HOME/.shell is not a symlink!"
  return 1
fi

# remove existing shell symlink if it exists
[[ -h "$HOME/.shell" ]] && rm -f "$HOME/.shell"

# create new shell symlink, but warn user if this fails!
if ! ln -s /usr/bin/zsh "$HOME/.shell"; then
  echo "ERROR: failed to create $HOME/.shell symlink.  Manually create the symlink or future logins will fail!."
  return 2
fi
EOF

$ chmod 700 ~/bin/use-zsh

এটি বিপজ্জনক কারণ হ'ল যদি সঞ্চিত শেলটি /etc/passwdকোনও বৈধ প্রোগ্রাম না হয় তবে আপনি কোনও ব্যবহারকারীর অধীনে লগইন করতে পারবেন না । সুতরাং আপনি যদি সাবধান না হন তবে নিজেকে আপনার অ্যাকাউন্ট থেকে লক করতে পারেন; অর্থাত্ আপনার ~/.shellসিমলিংকটি ভেঙে গেছে বা কোনও ইন্টারেক্টিভ প্রোগ্রামে নির্দেশ করে না। আপনাকে ব্যবহারকারীর অ্যাকাউন্ট দিয়ে এটি ব্যবহার করতে স্বাগত জানাই তবে এটি আপনার rootঅ্যাকাউন্টের জন্য প্রস্তাবিত নয় ।

আপনি যদি এখনও চালিয়ে যেতে চান তবে

$ ~/bin/use-zsh         # ensures ~/.shell exists for chsh
$ echo "$HOME/.shell | sudo tee -a /etc/shells    # add symlink to system's list of valid shells
$ chsh -s ~/.shell      # changes default shell in /etc/passwd for $USER

3

chsh -s / bin / bash

একটি নতুন ডিফল্ট শেল ম্যানুয়ালি সেট করতে, chsh -s / আমার / নতুন / শেল যেমন chsh -s / bin / bash করুন। তারপরে আপনার শেলগুলি কেবল পুনরায় খুলুন।


2

Zsh ZDOTDIRশুরু করার আগে পরিবেশ পরিবর্তনশীল সেট করে আপনি আলাদা ডিরেক্টরি থেকে তার ব্যবহারকারী-প্রতি কনফিগারেশন ফাইলগুলি লোড করতে zsh বলতে পারেন ।

আপনি যদি আপনার কনফিগারেশন ফাইলগুলি লোড না করে zsh শুরু করতে চান তবে ZDOTDIRঅস্তিত্বহীন ডিরেক্টরিতে সেট করুন । আপনি যদি সিস্টেম কনফিগারেশন ফাইলগুলি (এগুলি বাদ দিয়ে /etc/zshenv) এড়িয়ে যেতে চান তবে আপনি চালাতে পারেন zsh -f। আপনি যদি সিস্টেম কনফিগারেশন ফাইলগুলি এড়িয়ে যেতে চান তবে প্রতি ব্যবহারকারী ফাইল চালান, চালান zsh -d

উদাহরণস্বরূপ, আপনি যদি ডিফল্ট না করে ওহ-মাই-জেডএস-কে ড্রাইভ করতে চান, তবে .zshrcআপনার হোম ডিরেক্টরিতে ওহ-মাই-জেডএস-কে রাখবেন না। পরিবর্তে, এটি অন্য কোথাও রাখুন, যেমন। ইন ~/.oh-my-zsh, এবং তারপরে ZDOTDIR=~/.oh-my-zsh zshযখন আপনি ও -মাই- zsh ব্যবহার করতে চান তখন চালান ।


টার্মিনাল অ্যাপ্লিকেশনগুলি SHELLপরিবেশ পরিবর্তনশীল দ্বারা চিহ্নিত শেলটি চালায় indicated যদি এই ভেরিয়েবলটি সেট না করা থাকে তবে তারা ব্যবহারকারীর ডাটাবেসে ( /etc/passwd) ব্যবহার করে লগইন শেল চালায় run আপনি যখন কোনও টার্মিনাল এমুলেটর শুরু করেন তখন আপনি একটি আলাদা অ্যাপ্লিকেশনটির জন্য অনুরোধ করতে পারেন xterm -e fish


0

এটি @ গিলিসে কিছুটা লুকানো থাকায় কোনও কনফিগারেশন ছাড়াই zsh লোড করার দ্রুত উপায়টির উত্তর দেয় যেমন .zshrc .zshenv ইত্যাদি without

zsh -f

আপনার কনফিগারেশনের কোনও কিছু zsh এর কিছু বৈশিষ্ট্যকে কাজ করা থেকে বিরত করছে কিনা তা পরীক্ষা করতে চাইলে এটি কার্যকর হয়।

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