আজ, আপনি সাধারণত কোনও সিস্টেমে একটি পসিক্স শেল খুঁজে পেতে পারেন এবং এর সাধারণ অর্থ আপনি পসিক্স ভাষায় স্ক্রিপ্ট করতে পারবেন (মডিউলগুলি কমপ্লায়েন্স বাগগুলিতে চলছে)।
একমাত্র সমস্যাটি হ'ল /bin/sh
কখনও কখনও পসিক্স শেল নয়। এবং আপনার অবশ্যই কার্যকর করতে হবে #!
এমন কার্যকর স্ক্রিপ্টগুলিতে লাইনটিকে হার্ড-কোড করতে হবে ; আপনি কেবল ব্যবহারকারীকে সমস্যাটি গবেষণা করতে বলতে এবং তারপরে আপনার স্ক্রিপ্টটি অনুরোধ করতে পারবেন না /path/to/posix/shell myscript
।
সুতরাং, কৌশলটি হ'ল আপনার স্ক্রিপ্টে পসিক্স বৈশিষ্ট্যগুলি ব্যবহার করা, তবে স্ক্রিপ্টটি পজিক্স শেলটি স্বয়ংক্রিয়ভাবে সন্ধান করুন। এটি করার একটি উপায় হ'ল:
#!/bin/sh
# At this point, we may be running under some old shell
# we have to tread carefully.
# note how we use test rather than [ ] syntax and avoid
# depending on test with no argument producing a failure;
# i.e. "test $posix_shell".
if ! test x$posix_shell = x ; then
# the three possible shell paths are just an example;
# please extend as necessary.
for shell in /usr/xpg4/bin/sh /bin/bash /usr/bin/bash ; do
if test -x $shell ; then
posix_shell=$shell
fi
done
if test x$posix_shell = x ; then
echo "no POSIX shell found"
exit 1
# or we could avoid bailing here and just fall back on /bin/sh:
# echo "falling back on /bin/sh: cross your fingers that it works"
# posix_shell=/bin/sh
fi
export posix_shell
# plain "$@" is broken in ancient shells!
# I seem to recall ${@+"$@"}: not sure if that's the right trick.
exec $posix_shell $0 ${@+"$@"} # can we count on exec in legacy shells?
fi
# phew, at this point in the script we have been re-executed and are
# being interpreted by some reasonably modern shell. We can use $(...)
# command substitution, and other features.
কোড উত্পন্নকরণের মতো অন্যান্য পদ্ধতি রয়েছে। আপনার স্ক্রিপ্টগুলি একটি ছোট স্ক্রিপ্টের সাথে বুস্ট্র্যাপ করুন যা কোনও # ছাড়াই স্ক্রিপ্ট ফাইলগুলির একটি বডি নেয়! লাইন, এবং একটি যোগ করুন।
সবচেয়ে খারাপ কাজটি আপনি করতে পারেন সম্পূর্ণ স্ক্রিপ্টগুলি এমনভাবে লেখা শুরু করা যাতে তারা 1981 সাল থেকে বোর্ন শেলের উপর দিয়ে চলে This এটি কেবল তখনই প্রয়োজন যদি আপনার এমন কোনও সিস্টেমের জন্য লিখতে হবে যা সত্যিকার অর্থে অন্য কোনও শেল নেই This ।