ম্যাক ওএস এক্স ইয়োসেমাইটে কীভাবে বাশ আপডেট করবেন


25

কেবল বাশ স্ক্রিপ্টিংটি একটু শিখার চেষ্টা করছি। আমার পুরানো বাশ সংস্করণ:

Bash version 3.2.53(1)-release...

আমি হোমব্রু দিয়ে ম্যাক ওএস এক্স জোসেমাইটে আমার ব্যাশ আপডেট করেছি:

brew update
brew install bash

তারপর টার্মিনাল বৈশিষ্ট্য আমি থেকে মান শেল পথ পরিবর্তন করেছি /bin/bashকরতে /usr/local/bin/bash(আমি বুঝতে হিসাবে এই হল যেখানে homebrew আপডেট ব্যাশ ইনস্টল)।

তারপরে আমি আবার ফলাফলটি পরীক্ষা করে নিলাম (এবং মনে হচ্ছে এটি সব ভাল):

$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...

তবে যখন আমি একটি সরল বাশ স্ক্রিপ্ট লেখার চেষ্টা করছিলাম:

#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
  do
     echo "Welcome $i times"
 done

ফলাফল হলো:

Bash version 3.2.53(1)-release...
Welcome {0..10..2} times

পরিবর্তে:

Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times

আমি যখন একই শেলটিতে স্ক্রিপ্ট চালানোর চেষ্টা করছি তখন বাশ সংস্করণটি কেন পুরানোতে ফিরে যায় ??? এই শুধু আমাকে freaks আউট! দয়া করে কেউ আমার সমস্যাটি কী তা আমাকে ব্যাখ্যা করুন)))

উত্তর:


17

আপনার সমস্যাটি আপনার প্রথম লাইনে রয়েছে। তোমার এটা আছে:

#!/bin/bash

যা স্পষ্টতই বলেছে যে শেল স্ক্রিপ্টটি পুরানো সাথে চালানো উচিত /bin/bash। আপনি আসলে যা চান তা হ'ল:

#!/usr/local/bin/bash

নতুন ব্যবহার করতে bashথেকে /usr/local/bin


অদ্ভুত জিনিস, কিন্তু এটি আসলে কাজ করে না। তবুও একই ফলাফল ((তবে আমি নিশ্চিত এটি একটি সমস্যার একটি অংশ
ড্রু

আমার কি অন্য কোথাও এই পথটি নির্দিষ্ট করতে হবে? কিছু শেল ফাইল বা কিছুতে?
ড্রিউ

1
সম্ভবত পরিবেশটি কলিং শেল দ্বারা সেট করা হয়েছে, অর্থাত্ পুরানো বাশ? আপনি কীভাবে আপনার স্ক্রিপ্টটি ডাকছেন, অ্যান্ড্রু?
914 এ 14hhck করুন

1
@ অ্যান্ড্রু, আমি সন্দেহ করি যে আপনি shআছেন /binbrewসম্ভবত কল করার জন্য একটি সিমিলিংক bashতৈরি করে নি sh। আপনার সাথে $PATHসঠিকভাবে সেট, ভালো এটা শুরু চেষ্টা করুন: bash script.sh
বেনজিওয়েব

8
ভবিষ্যতের রেফারেন্সের জন্য আপনার সম্ভবত ব্যবহার করা উচিত#!/usr/bin/env bash
pjvandehaar

15

নতুন ব্যাশ ইনস্টল করুন:

brew install bash

এটি ডিফল্ট শেল করুন:

chsh -s /usr/local/bin/bash

একটি স্ক্রিপ্টে পরিবেশ সেট করুন:

#!/usr/bin/env bash

ব্যবহার করা envআপনার মধ্যে বাশের সন্ধান করবে $PATHএবং এটির মুখোমুখি হওয়া প্রথমটি ব্যবহার করবে। bashএটি টাইপ করে আপনি কোনটি ব্যবহার করবেন তা দেখতে পাবেন which bash। যদি এইজন্য হচ্ছে /bin/bashপ্রথম, আপনি আপনার সেট করতে হবে $PATHসালে ~/.bashrcএবং /.bash_profile


2
আপনি যদি ব্যবহারের সময় মুদ্রিত "অ-মানক শেল" দেখতে পান তবে আপনাকে / ইত্যাদি / শেল আপডেটchsh করতে হবে ।
স্কট উইলেকে

6

পিজেভি হিসাবে উল্লেখ করা হয়েছে, আপনার সত্যই ব্যবহার করা উচিত

#!/usr/bin/env bash

আপনার স্ক্রিপ্টে সর্বত্র পোর্টেবল হতে হবে। যেমন আপনি যদি স্ক্রিপ্টটি দিয়ে চালানোর চেষ্টা করেন

#!/usr/local/bin/bash

এটি বেশিরভাগ লিনাক্স সিস্টেমে ব্যর্থ হবে।

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