একটি নির্দিষ্ট ওয়ার্কিং ডিরেক্টরি সহ একটি কমান্ড চালানো, সাধারণত একটি করে
( cd directory && utility )
চারপাশের প্রথম বন্ধনীর cd ...
অর্থ হ'ল এতে কমান্ড (গুলি) একটি সাব-শেলের মধ্যে চলে। ওয়ার্ক ডিরেক্টরিটি একটি সাবশেলে পরিবর্তন করা এটিকে তৈরি করে যাতে কলিং শেলের বর্তমান কার্যকরী ডিরেক্টরিটি পরিবর্তিত হয় না, অর্থাত্ এই আদেশটি ডেকে নেওয়ার পরেও আপনি যে ডিরেক্টরিটি শুরু করেছিলেন সেখানেই অবস্থিত থাকবেন।
উদাহরণ:
( cd / && echo "$PWD" ) # will output "/"
echo "$PWD" # will output whatever directory you were in at the start
এটিকে কোনও জেনেরিক ওরফে রূপান্তর করা যায় না কারণ একটি উপাস কোনও যুক্তি নিতে পারে না।
একটি নির্দিষ্ট ডিরেক্টরি এবং ইউটিলিটির জন্য, কেউ এটি করতে পারে
alias cdrun='( cd "$HOME/somedir" && ./script.sh )'
তবে সাধারণ ক্ষেত্রে আপনাকে শেল ফাংশন ব্যবহার করতে হবে:
cdrun () {
( cd "$1" && shift && command "$@" )
}
অথবা
cdrun () (
cd "$1" && shift && command "$@"
)
ফাংশনের দেহের চারপাশে কোঁকড়া ধনুর্বন্ধনী প্রতিস্থাপন ফাংশনটিকে তার নিজস্ব সাবশেলে সম্পাদন করে।
এটি হিসাবে ব্যবহৃত হবে
$ cdrun "$HOME/somedir" ./script.sh
যা স্ক্রিপ্ট চালানো হবে script.sh
ডিরেক্টরিতে অবস্থিত $HOME/somedir
সঙ্গে, $HOME/somedir
পরিশ্রমী ডিরেক্টরি, বা
$ cdrun / ls -l
যা আপনাকে মূল ডিরেক্টরিটির "দীর্ঘ ফর্ম্যাট" এ ডিরেক্টরি তালিকা সরবরাহ করবে।
শেল ফাংশনটি তার প্রথম যুক্তি নেয় এবং সেই ডিরেক্টরিতে পরিবর্তনের চেষ্টা করে। যদি এটি কাজ করে তবে এটি ডিরেক্টরি নামটি অবস্থানগত প্যারামিটারগুলি (কমান্ড লাইন আর্গুমেন্ট তালিকা) থেকে সরিয়ে দেয় এবং বাকি আর্গুমেন্টের দ্বারা প্রদত্ত কমান্ডটি কার্যকর করে। command
শেলের একটি অন্তর্নির্মিত কমান্ড যা কমান্ড হিসাবে তার যুক্তিগুলি কেবল কার্যকর করে।
আপনি যদি একটি পরিবর্তিত ওয়ার্কিং ডিরেক্টরি সহ একটি কমান্ড চালাতে চান তবে এই সমস্ত প্রয়োজন । আপনি যদি কেবল অন্য কোথাও অবস্থিত একটি কমান্ড চালাতে চান তবে আপনি অবশ্যই ব্যবহার করতে পারেন
alias thing='$HOME/somedir/script.sh'
কিন্তু এই চালানো হবে script.sh
অবস্থিত $HOME/somedir
সঙ্গে বর্তমান পরিশ্রমী ডিরেক্টরি যেমন ডিরেক্টরি।
কার্যনির্বাহী ডিরেক্টরি পরিবর্তন না করে অন্য কোথাও অবস্থিত স্ক্রিপ্ট কার্যকর করার আরেকটি উপায় হ'ল স্ক্রিপ্টের অবস্থানটি আপনার PATH
পরিবেশ পরিবর্তনশীলে যুক্ত করা, যেমন
PATH="$PATH:$HOME/somedir"
এখন script.sh
মধ্যে $HOME/somedir
মাত্র ব্যবহার করে যেকোনো স্থান থেকে চালানো যাবে সক্ষম হবে
$ script.sh
আবার এটি কমান্ডের জন্য ওয়ার্কিং ডিরেক্টরি পরিবর্তন করে না ।
cdrun () ( cd "$1" && shift && command "$@" )
।