আমি রাবির উত্তরটি পরিপূরক করতে চাই :
এই আচরণটি উবুন্টুর সাথে সুনির্দিষ্ট (এবং সম্ভবত সর্বাধিক উত্সযুক্ত ডিস্ট্রোস), যেহেতু আপনার ডিফল্ট ~/.bashrcফাইলটি একটি শর্ট-সার্কিট, উবুন্টু 18.04 দিয়ে শুরু হয়, উদাহরণস্বরূপ:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
এটি যদি কোনও অ-ইন্টারেক্টিভ শেলটিতে চালিত হয় তবে ফাইলটির মূল্যায়ন বন্ধ হবে, যা আপনার স্ক্রিপ্টের ক্ষেত্রে যেহেতু সমস্ত স্ক্রিপ্ট একটি অ ইন্টারেক্টিভ শেলটিতে চালিত হয় এবং পরবর্তীকালে প্রতিটি ফাইল আপনি sourceএই সম্পত্তিটির উত্তরাধিকারী হবেন।
eval টাট্টু ঘোড়া
উবুন্টুকে বিশেষ করে এর evalপরিবর্তে ব্যবহার করার জন্য আমি একটি কুৎসিত হ্যাক পেয়েছি source:
eval "$(cat ~/.bashrc | tail -n +10)"
এটি কেবল কয়েকটি প্রথম লাইন এড়িয়ে যায় এবং বাকিগুলির মূল্যায়ন করে ~/.bashrcযাতে বাকী মূল্যায়ন করা হয় এবং বর্তমান সম্পাদনকে সংশোধন করে।
সচেতন থাকুন এটি একটি যাদু নম্বর এবং উবুন্টু সংস্করণগুলিতে কাজ নাও করতে পারে; আপনি যদি আরও কম-বেশি পরিচিত সিস্টেমগুলির জন্য স্ক্রিপ্টগুলি ক্র্যাফট করছেন তবে এটি একটি ভাল সমাধান হতে পারে।
একটি ফ্যানসিয়ার সলিউশন মূল্যায়ন থামিয়ে দেয় এমন নির্দিষ্ট বিটগুলিকে টার্গেট করতে রেজেেক্স ব্যবহার করে জড়িত থাকতে পারে।
শেবাং বিকল্প
আরও কিছু বিকল্প যা কিছু পরিস্থিতিতে আরও ভাল কাজ করতে পারে তা হ'ল স্ক্রিপ্টটি শেবাংয়ের মধ্যে একটি পতাকা যুক্ত করে একটি ইন্টারেক্টিভ শেলটিতে চালিত করতে বাধ্য করা :
#!/bin/bash -i
কয়েকটি বিষয় সম্পর্কে সচেতন হন:
- এটা একটা ভাল অনুশীলন ব্যবহার করতে
#!/usr/bin/env bashফর্ম কিন্তু এই ভাবে আপনি আর্গুমেন্ট সহ শেল শুরু করতে পারে না ।
- ব্যবহার
-iপরিণতি এটা নিজস্ব সেট আছে, তাদের মধ্যে, প্রোগ্রাম যা ব্যবহারকারীর কোনো ভূমিকা জন্য প্রম্পট হবে এবং এই সাধারণত স্ক্রিপ্টের জন্য উদ্দেশ্যে না হয়, উদাহরণস্বরূপ, ইনস্টল করার debপ্যাকেজ এ স্ক্রিপ্ট বন্ধ করতে পারে dpkg configureঅনুরোধ জানানো ।
- আমি প্রথমে ব্যবহার করার চেষ্টা
set -iএবং set +iউপর এবং যেখানে আমি এটা প্রয়োজন বন্ধ বৈশিষ্ট্যটি চালু, কিন্তু এই কাজ করে না ।