OSX এ ভার্সন 4.0 সংস্করণে আপডেট করুন


80

ওএসএক্স ইয়োসেমাইটে প্রকৃতপক্ষে সংস্করণ ৪.০ এ বাশ আপডেট করা কি সম্ভব?

echo $BASH_VERSION
3.2.57(1)-release

এই নিবন্ধ এবং এই থ্রেড একই প্রশ্নের উল্লেখ করে তবে তারা পুরানোটির সাথে পাশাপাশি একটি নতুন শেল ইনস্টল করে। পুরানো বাশ শেলটি সরাসরি আপডেট করার কোনও উপায় আছে?


3
তা করার দরকার নেই। আসলে, আসলটি রাখা সর্বদা একটি ভাল ধারণা।
বাশের

মূলত অ্যাপলের সফ্টওয়্যার আপডেট সিস্টেমটিতে BASH এর সংস্করণ পরিবর্তনের জন্য যেমন দায়ী, যেমন এটি শেলশকের জন্য BASH তে আপডেটটি করেছিল। সুতরাং যদি না অ্যাপল আপডেট সরবরাহ করে তবে জিএনইউ বাসের সর্বশেষ সংস্করণে ওএস এক্সের অংশ হিসাবে ইনস্টল হওয়া আপডেট করার সরাসরি কোনও উপায় নেই An তারপরে এটি আপনার ডিফল্ট শেল হিসাবে সেট করুন। আপনি শিপড সংস্করণ বা অ্যাপল আপডেট হওয়া সংস্করণ অপসারণ করতে বেছে নিন বা না করুন, এটি আপনার উপর নির্ভর করে।
ব্যবহারকারী 3439894

উত্তর:


36

অ্যাপল বাশকে আপডেট করবে না, কারণ সর্বশেষতম সংস্করণটি জিপিএলভি 3 এর অধীন লাইসেন্সযুক্ত, যা অ্যাপল ব্যবহার করতে পারে না। যদিও তারা তাদের অন্যান্য শেলগুলির বেশিরভাগ আপডেট করেছে। উদাহরণস্বরূপ জেডএসএইচ বেশিরভাগ আপ টু ডেট।

তথ্যসূত্র:

কিছুটা গবেষণা করার পরেও এটি প্রাথমিক সমস্যার মতো মনে হচ্ছে:

লোকেরা যখন জিপিএলভি 3 এর অধীনে সফটওয়্যার অন্তর্ভুক্ত ব্যবহারকারী পণ্যগুলি বিতরণ করে তখন বিভাগের 6 এর প্রয়োজন হয় যে তারা আপনাকে সেই সফ্টওয়্যারটি সংশোধন করার জন্য প্রয়োজনীয় তথ্য সরবরাহ করবে। ব্যবহারকারী পণ্যগুলি এমন একটি শব্দ যা লাইসেন্সে বিশেষভাবে সংজ্ঞায়িত হয়; ব্যবহারকারী পণ্যগুলির উদাহরণগুলির মধ্যে পোর্টেবল সঙ্গীত প্লেয়ার, ডিজিটাল ভিডিও রেকর্ডার এবং হোম সুরক্ষা সিস্টেম অন্তর্ভুক্ত রয়েছে।

এটির জন্য অন্যথায় ক্লোজড-সোর্স সফ্টওয়্যারটির প্রয়োজন হবে, এর জিপিএল'র অংশগুলি জনসাধারণের দ্বারা পরিবর্তনযোগ্য করে তুলতে হবে, এটি স্পষ্টতই অ্যাপলের জন্য একটি সমস্যা।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
bmike

5
এই ব্যাখ্যাটি বোঝায় না। একটি জিপিএল (v3 বা অন্যথায়) বাইনারি শিপিংয়ের অর্থ এই নয় যে বাকী ওএস ছেড়ে দেওয়া দরকার। বাকি ওএসের সাথে লিঙ্ক নেই bash। "টিভোয়াইজেশন" ধারাটি ব্যাখ্যা bashকরতে পারে কেন একটি অ্যাপল টিভিতে আপডেট করা যায় না, বলুন, তবে কোনও ডেস্কটপ ম্যাকের উপরে নেই। তদ্ব্যতীত, "জিপিএল'র অংশগুলি" ইতিমধ্যে জনগণের দ্বারা পরিবর্তনযোগ্য করা দরকার; v3 যে পরিবর্তন করবে না। আমি বিশ্বাস করব যে জিপিএল ভি 3 এর পেটেন্টস ধারাটি অ্যাপলকে জিপিএল ভি 3 কোড স্পর্শ করা থেকে বিরত রাখতে যথেষ্ট হবে।
জেমসডলিন

কেন আপেল জন্য এটি একটি সমস্যা হবে? বাশ ইতিমধ্যে ওপেন সোর্স (সমস্ত সংস্করণ ≥1.14 জিএনইউ @ ftp.gnu.org/gnu/bash এর মাধ্যমে উপলব্ধ এবং ম্যাকোস (বর্তমানে v3.2) সহ অন্তর্ভুক্ত সংস্করণ অ্যাপল @ ওপেনসোর্স.এপলস / সোর্স / বাশের মাধ্যমে উপলব্ধ ), তবে তা নির্বিশেষে পরিবর্তন করা যেতে পারে।
ভয়েসেস

@ tjt263 এটি জিপিএলভি 3 এবং জিপিএলভি 2 এর মধ্যে পার্থক্য সম্পর্কে, যা অ্যাপল সংস্করণ ব্যবহার করে, এটি এখনও লাইসেন্সধীন।
উইলিয়াম টি ফ্রগগার্ড

3
ডান, বাশ 3.2 জিপিএলভি 2 এর অধীন লাইসেন্সপ্রাপ্ত। জিএসএলভি 3 এর অধীনে বাশ 4.x লাইসেন্সযুক্ত। তাতে কি? আপনি বলেছিলেন: "অ্যাপল বাশকে আপডেট করবে না, কারণ সর্বশেষতম সংস্করণটি জিপিএলভি 3 এর অধীনে লাইসেন্সযুক্ত, যা অ্যাপল ব্যবহার করতে পারে না ।" কেন তারা পারে না? "এটির জন্য অন্যথায় ক্লোজড-সোর্স সফ্টওয়্যারটির প্রয়োজন হবে, এর জিপিএল'র অংশগুলি জনসাধারণের দ্বারা পরিবর্তনযোগ্য করে তুলতে হবে, এটি স্পষ্টতই অ্যাপলের জন্য একটি সমস্যা হয়ে উঠবে ।" কেন এটি একটি সমস্যা? তারা ইতিমধ্যে এটি করে। এটি ইতিমধ্যে জনসাধারণের দ্বারা পরিবর্তনযোগ্য। সমস্ত সফটওয়্যার। বিশেষত যখন এটি ফস এবং তারা যে কেউ চায় তাদের সাইটে উত্স কোডটি দিচ্ছে।
ভয়েসেস

62

ওএসএক্স ইয়োসেমাইটে প্রকৃতপক্ষে সংস্করণ ৪.০ এ বাশ আপডেট করা কি সম্ভব? হ্যাঁ.

  1. টার্মিনালটিতে এই কমান্ডটি চালিয়ে হোমব্রিউ http://brew.sh/ ডাউনলোড / ইনস্টল করুন ।

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. প্রস্থান করুন এবং আপনার টার্মিনালটি আবার খুলুন। তারপরে টাইপ করুন

    brew install bash
  3. আপনার নতুন ব্যাশের আক্ষরিক পথ দিয়ে টার্মিনাল গুইয়ের মাধ্যমে ডিফল্ট শেলটি পরিবর্তন করুন (সম্পাদনা: আমার এখনও কাজ করার জন্য একটি সি এল এল উপায় খুঁজে পাওয়া যায়নি)

এখানে চিত্র বর্ণনা লিখুন

ওএসএক্স যোসমেটে অ্যাপলের প্রদত্ত বাশ সংস্করণ ৪.০ এ আসলে বাশ আপডেট করা সম্ভব ?

সম্পাদনা: না। উপায় জিজ্ঞাসা না। যেমন নিজেকে প্রতিস্থাপনের মাধ্যমে বর্তমান ইনস্টল আপগ্রেড করুন। অন্যান্য উত্তরে এটি লক্ষ্য করা গেছে যে লাইসেন্স সংক্রান্ত সমস্যার কারণে অ্যাপল বাশ আপডেট করেনি। তবে বাশের একটি আপডেট হওয়া এবং পৃথক সংস্করণ ডাউনলোড করা এবং এটি আপনার ডিফল্ট শেল হিসাবে ব্যবহার করা বেশিরভাগ দোভাষীদের পক্ষে প্রচলিত সমাধান। উদাহরণস্বরূপ পাইথন নিন। আপনি 2.7 থেকে 3.5 আপগ্রেড করবেন না আপনি আলাদা সংস্করণ ডাউনলোড করেন এবং আপনার ডিফল্ট পরিবর্তন করেন।


12
আপনার সাথে CLI মাধ্যমে ডিফল্ট সেট করতে পারেন: sudo chpass -s /usr/local/bin/bash। দ্রষ্টব্য: /usr/local/bin/প্রতিবার আপনার পরিবেশ পরিবর্তন না করেই সেইভাবে সিউমিলিংকে নির্দেশ করা ভাল Bre
সানস্পুন

3
নন-অ্যাপল শেল নিয়ে যাওয়ার ঝুঁকি কী?
বজর্কস এক নম্বর ভক্ত

5
sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'তারপরে chsh -s /usr/local/bin/bashটার্মিনালের জন্য ডিফল্ট শেল সেট করবে
অভিজিৎ সরকার

51

@ উইলিয়াম যেমনটি তার উত্তরে বলেছিলেন, জিপিএল বিধিনিষেধের কারণে অ্যাপল ব্যাশ 4 সরবরাহ করে না। তবে তবে আপনি বাশ 4+ ইনস্টল করতে পারেন এবং নিম্নলিখিতটি করে এটি আপনার ডিফল্ট শেল (টার্মিনাল এবং আইটার্ম 2 সহ ) তৈরি করতে পারেন ।

Homebrew এর মাধ্যমে বাশ 4 ইনস্টল করুন

প্রথমে বাশের আরও নতুন সংস্করণ ইনস্টল করুন। এটি করার বিভিন্ন উপায় আছে, আমি হোমব্রিউ পছন্দ করি।

  • Http://brew.sh এ বর্ণিত হোমব্রিউ ইনস্টল করুন ।
  • ব্যাশ ব্যবহার করে ইনস্টল করুন brew install bash

বাশ 4 এখন আপনার পাথের উপর উপলব্ধ (হোমব্রিউ বিন আপনার পথে রয়েছে তা ধরে নিচ্ছেন)। যাইহোক, এটা হয় না এখনো আপনার ডিফল্ট শেল। দৌড়ে গিয়ে এটি কোথায় রয়েছে তা খুঁজে পেতে পারেন which bash। আমার ক্ষেত্রে এটি হয় /usr/local/bin/bash

ব্যাশ 4 ব্যবহার করা

যেহেতু এটি আপনার পাঠে রয়েছে, আপনি বাশ 4 সেশনটি ন্যায়সঙ্গত দিয়ে শুরু করতে পারেন bashবা এটি শিবাং ব্যবহার করে স্ক্রিপ্টগুলিতে ব্যবহার করা যেতে পারে ।

উদাহরণস্বরূপ, এটি একটি নির্দিষ্ট বাশ উদাহরণ ব্যবহার করবে।

#!/usr/local/bin/bash
...your script...

এটি PATH- এ প্রথম ব্যাশ ব্যবহার করবে।

#!/usr/bin/env bash
...your script...

আপনি @ user136952 এর উত্তরে বর্ণিত পদক্ষেপগুলি ব্যবহার করে টার্মিনাল / আইটার্ম 2 এর নির্দিষ্ট প্রোফাইলগুলির জন্য বাশ পাথ সেট করতে পারেন।

বাশ 4 ডিফল্ট করা

উপরে উল্লিখিত হিসাবে, ব্যাশ 4 ইনস্টল করার পরে এখনও ডিফল্ট শেল নয়। ব্যাশকে ডিফল্ট করতে আপনাকে আরও দুটি পদক্ষেপ করতে হবে।

প্রথমে আপনার /etc/shellsফাইলে বাশ 4 পাথ যুক্ত করুন যাতে এটি একটি অনুমোদিত লগইন শেল। / ইত্যাদি / শেলগুলিতে বর্ণিত হিসাবে , এই ফাইলটিতে বৈধ লগইন শেলগুলির তালিকা রয়েছে। নতুন বাশ পাথ যুক্ত করার পরে আমার /etc/shellsদেখতে নিম্নলিখিতগুলির মতো:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash

এর পরে আমরা এটিকে আপনার ডিফল্ট শেল তৈরি করতে chsh ব্যবহার করি। সুতরাং যে ব্যবহারকারীর জন্য কোনও সেশন সেই শেলটি ব্যবহার করবে। আপনি ম্যাক ওএস এক্স টার্মিনালের শেল চেঞ্জ এ সম্পর্কে আরও পড়তে পারেন , তবে আসল কমান্ডটি খুব সোজা।

chsh -s /usr/local/bin/bash

এখন নতুন বাশটি আমাদের ডিফল্ট লগইন শেল। আপনি যদি টার্মিনাল বা আইটার্ম 2 খুলেন এবং চালনা করেন তবে bash --versionআপনার নতুন সংস্করণটি দেখতে পাওয়া উচিত। "লাইসেন্স জিপিএলভি 3 +" নোট করুন যার কারণে অ্যাপল এটিকে ম্যাকওএস দিয়ে বান্ডিল করে না।

$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.6.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

2
তিনি যে নিবন্ধ / থ্রেডের সাথে যুক্ত ছিলেন তার ভিত্তিতে আমি মনে করি তিনি সত্যই পাশের পাশাপাশি না বলে "ডিফল্ট নন" বলে অভিহিত করেছেন। আমার উত্তর 4 টি ডিফল্ট করে তাই 3 টি আর দেখা যায় না। পুরানো বাশটি এখনও কিছু ডিস্ক স্থান গ্রহণ করার ঘটনা ঘটে যা আমার কাছে বড় সমস্যা বলে মনে হয় না।
স্টাডিজিক

1
আমার দ্বারা +1 হ্যাঁ, ওপি এটি চায় না, তবে প্রশ্নটি সম্প্রদায়টির এবং এটি যদি অন্য ব্যক্তিকে সহায়তা করে তবে দুর্দান্ত। ওপি যে উত্তরটি নির্বাচন করে তার উত্তর হিসাবে এটি চেক নাও পেতে পারে তবে এটি কোনও খারাপ উত্তর দেয় না।
bmike

3
হাই সিয়েরাতে, sudo chpass -s /usr/local/bin/bashআমার শেলটি কেবলমাত্র রুট / সুডোর জন্য পরিবর্তন করে আমার নিয়মিত লগইনের জন্য পরিবর্তন করতে, আমাকে অবশ্যই কমান্ডটি চালানো উচিত sudo। এটি একটি অ্যাক্টিভ ডিরেক্টরি জিনিস হতে পারে; আমি নিশ্চিত নই.
ব্র্যাড্ড সোজনে

1
#!/usr/local/bin/bashশেবাং ব্যবহার না করে ব্যবহার #!/usr/bin/env bash( ব্যাখ্যা ) দেখুন। এটি স্ক্রিপ্টটি চালাবে যা স্ক্রিপ্টটি চালু করছে এমন পরিবেশের দ্বারা বাশ-এর ​​যে কোনও সংস্করণ পৌঁছানো যায়, অর্থাৎ যা কিছু which bashআসে। এটি একটি আরও বহনযোগ্য সমাধান যা নির্দিষ্ট পাথ ব্যবহার করে। আমরা অন্যান্য ব্যবহারকারীদের হোমব্রুয়ের মাধ্যমে বাশ ইনস্টল করার আশা করতে পারি না।
ইলিয়া মোসকভিন 21

1
ইলিয়া মস্কভিন, আমি মূলত একটি নির্দিষ্ট পথ ব্যবহার করেছি কারণ আমি কীভাবে এটি স্পষ্টভাবে ব্যবহার করতে পারি তা দেখাতে চেয়েছিলাম। আমি উভয় আছে উদাহরণ আপডেট করেছি।
স্টাডিজিক

0

আপনি হোমব্রু ছাড়াই বাশের অন্য সংস্করণ ইনস্টল করতে পারেন

  • জিএনইউ বাশে যান
  • আপনি চান সংস্করণটি ডাউনলোড করুন ( এখানে )
  • এবং এখানে পদক্ষেপগুলি অনুসরণ করুন: https://gist.github.com/samnang/1759336

    আপনি যে সংস্করণটি চান চান তা প্রতিস্থাপন XX (ব্যাশ-এক্সএক্সএক্স) সহ বাশ সংস্করণটি ডাউনলোড করুন এবং ইনস্টল করুন eg.৪.৪

    curl -O http://ftp.gnu.org/gnu/bash/bash-X.X.tar.gz
    tar xzf bash-X.X.tar.gz
    cd bash-X.X
    ./configure --prefix=/usr/local && make && sudo make install
    

    লাইট শেলগুলির তালিকায় নতুন শেল যুক্ত করুন

    sudo bash -c "echo /usr/local/bin/bash >> /private/etc/shells"

    ব্যবহারকারীর জন্য শেল পরিবর্তন করুন

    chsh -s /usr/local/bin/bash

    বাশ 4 এবং / usr / স্থানীয় / বিন / ব্যাশের জন্য পরীক্ষা করুন ...

    echo $BASH && echo $BASH_VERSION

    আপনি যদি ব্যাশ কমান্ডটি ব্যবহার করতে চান তবে আপনি একটি উপনাম যুক্ত করতে চাইতে পারেন। আপনার ~ / .Bash_ প্রোফাইলে রাখুন

    alias bash="/usr/local/bin/bash"

-1

আপনার শেলের আপডেটের সাথে পাশাপাশি ইনস্টল করা (chsh বা GUI এর মাধ্যমে) স্ক্রিপ্টগুলির জন্য ব্যর্থ হবে। স্ক্রিপ্টগুলি প্রায়শই ব্যবহার করে env bashযা ওএস এক্স ব্যাশ সংস্করণে ফিরে আসে। সুতরাং, আপনি যা চান তা ব্যাশের সম্পূর্ণ আপডেট নাও হতে পারে, পাশাপাশি পাশাপাশি ইনস্টল করুন যা সর্বদা বাশের নতুন সংস্করণটি ফেরত দেয় (অর্থাত্‍ যখন অনুরোধ envকরা হয় তখনও )।

সুতরাং, এটি পরিচালনা করতে:

1) অন্যান্য মন্তব্যকারীরা যেমন পোস্ট করেছেন তেমন হোমব্রিউয়ের মাধ্যমে বাশ ইনস্টল করুন

2) আপনার লগইন শেলটিকে এই নতুন সংস্করণে সেট করুন (জিইউআই বা chsh কমান্ডের মাধ্যমে অন্যরা পোস্ট করেছে)

3) আপনার $ PATH ভেরিয়েবলের /usr/local/binআগে সেট করুন (বা নতুন বাশ সংস্করণের পথে) /binএটিতে যুক্ত করে ~/.bash_profile:export PATH=/usr/local/bin:$PATH


এটি এমন স্ক্রিপ্টগুলি ভেঙে দেবে যা বাশ সংস্করণ 3 আশা করে - যেমন অ্যাপল সরবরাহিত স্ক্রিপ্টগুলি - আপনাকে পাশাপাশি এসডি ব্যবহার করতে হবে
user151019

একটি সুস্পষ্ট পয়েন্ট। কিছু সময়ের জন্য এভাবে চলছে এবং কোনও সমস্যা নেই। সম্ভবত অ্যাপল তার স্ক্রিপ্টগুলিতে পুরো পথ সরবরাহ করেছে বা এটি কেবল একটি ছটফটায় আঘাত করে নি। অ্যাপল সিস্টেম স্তরের স্ক্রিপ্টগুলির জন্য, যেমন শেল থেকে নয়, এটি কখনই কল করে .bash_profileনা, সুতরাং এটি কেবলমাত্র কোনওভাবেই আপনি টার্মিনালে সরাসরি চালিত কোনও কিছুকে প্রভাবিত করবেন।
সিউরভ

2
@ মার্ক আমি এমন কোনও উদাহরণের কথা ভাবতে পারি না যেখানে v ≥4.x ভি ≤3.x এর জন্য লেখা একটি স্ক্রিপ্ট ভঙ্গ করবে। পারবে তুমি?
ভয়েসেস

-1

2019: এই পোস্টে হিসাবে সহজ

$ brew install bash
$ sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
$ chsh -s /usr/local/bin/bash

তারপরে একটি নতুন টার্মিনাল ট্যাব করুন, উপভোগ করুন!


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