বর্তমানে, টার্মিনালে আমার ডিফল্ট ইন্টারেক্টিভ শেলটি হ'ল বাশ সংস্করণ 4.৪। ৩.২ সহ ওএস জাহাজগুলি।
যদি আমি my_script.sh
বাশ সংস্করণ ৪.৪ ব্যবহার করে কোনও স্ক্রিপ্ট (যেমন, ) চালাতে চাই , তবে আমি এটি উত্স ( source my_script.sh
) তৈরি করতে পারি বা এটি সরাসরি আমার টার্মিনালে টাইপ করতে পারি। যদিও, প্রতিটি ক্ষেত্রে স্ক্রিপ্টটি আমার বর্তমান শেলের মধ্যে চলে। আমি কোনও স্ক্রিপ্টও অনুমতি কার্যকর করতে এবং কমান্ড হিসাবে এটি চালাতে পারি, শেবাংকে কোন ধরণের সংস্করণ ব্যবহার করা উচিত তা নিয়ন্ত্রণ করার অনুমতি দেয়।
তবে, কমান্ডটি bash
3.2 সংস্করণ ব্যবহার করা অবিরত করে। উদাহরণস্বরূপ, যদি আমি চালনা করি bash my_script.sh
তবে স্ক্রিপ্টটি একটি নতুন শেলটিতে চালিত হবে (যা আমি চাই) তবে ব্যাশের পুরানো সংস্করণটি ব্যবহার করা হবে (3.2)। একইভাবে, যদি আমি কেবল bash
কোনও যুক্তি ছাড়াই চলি, তবে সংস্করণ 3.2 ব্যবহার করে একটি নতুন শেল খোলে (মনে রাখবেন, আমি যদি টার্মিনালে একটি নতুন উইন্ডো বা ট্যাব খুলি, তবে এটি আমার ডিফল্ট শেল, বাশ v। 4.4 ব্যবহার করে here আমি কমান্ডটি ব্যবহার করি bash
)।
আমি আমার মেশিনে 4.4 বাশ দেওয়ার পথটি আমার মেশিনে ( /usr/local/bin/bash
) PATH
পরিবর্তন করে দিয়েছি .bash_profile
এবং এটি অন্য কোথাও ওভাররাইট করা হচ্ছে না ( echo $PATH
প্রত্যাশিত ফলাফল দেয়: একেবারে প্রথম পাথ usr/local/bin/bash
)। আমি এটি কমান্ডের আচরণ পরিবর্তন করার প্রত্যাশা করেছিbash
আমি একটি উপনাম ( alias bash4='/usr/local/bin/bash'
) নির্ধারণ করে একটি কার্যকারিতা ব্যবহার করতে পারি, তবে আমাকে বাশ 3.2 এর জন্য বা একটি উথান ব্যবহার করতে হবে না, উদাহরণস্বরূপ, পাইথন বা আর।
আমি কি অনুপস্থিত কিছু আছে? ওরফে সমাধানটি কি এখানে একমাত্র বিকল্প?
সম্পাদনাগুলি
মন্তব্যের জবাবে:
SHELL
এটিই /usr/local/bin/bash
আমার ডিফল্ট লগইন শেল যেহেতু উদ্বেগজনক।
type -a bash
মজাদার...
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
আমার পুরো পথটি একটি জগাখিচুড়ি, যা এই সমস্যার উত্স হতে পারে।
/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin
আমার পথের সাথে সম্পর্কিত নয় সমস্যা, আমার অজান্তেই $PATH
আমার এক লাইনে পুনরায় পুনরায় পুনরায় পাঠ করা হয়েছিল .bash_profile
, (PATH = AT PATH :: AT PATH) অনাকাঙ্ক্ষিত সদৃশ ঘটায়
echo $PATH
। ডিফল্ট ব্যাশটি পাওয়া যায় /bin/bash
এবং আমি বাজি ধরছি এটি v4 বাশ যাওয়ার পথে আগে আসবে।
/bin
। টাইপ করে এটি নিশ্চিত করুন which bash
। তবে আমাদের এখনও আপনার পথ দেখতে হবে।
/bin
সেখানে একাধিকবার উপস্থিত ছিলেন এবং আমি বুঝতে পেরেছিলাম এটি সেখানেই থাকা উচিত। যদিও এটি সমাধান করার জন্য আমি খুব প্রথম দিকে 4.4 বাশ করার পথ রেখেছি।
type -a bash
এবং ভাগ করুনecho $SHELL
।