$ (Dirname `readlink -f $ 0`) এ অদ্ভুত আচরণ


11

আমি যখন সাধারণ ব্যবহারকারী হিসাবে নিম্নলিখিতটি চালিত করি তখন সবকিছু ঠিকঠাক হয়:

$(dirname `readlink -f $0`)

তবে আমি রুটে যাওয়ার পরে, নিম্নলিখিত ত্রুটিটি ঘটেছে:

readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.

কোন ধারনা? আমি স্থানীয় ফেডোরা 16 এবং আমাজন ইসি 2 তে চেষ্টা করেছি, উভয়ই বাশ শেল চলছে।

উদাহরণের জন্য সম্পাদনা করুন।

আমি এখানে সমস্যাটি আরও বর্ণনা করি নি বলে ক্ষমা চাই। এই দৃশ্যটি এখানে:

সাধারণ ব্যবহারকারীর অ্যাকাউন্ট ব্যবহার করা:

$ pwd 
/home/myuser 
$ export MY_DIR=$(dirname `readlink -f $0`) 
$ echo MY_DIR 
/home/myuser

মূল ব্যবহার:

# pwd
/root
# export ROOT_DIR=$(dirname `readlink -f $0`)
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.

# export ROOT_DIR=echo $(dirname `readlink -f -- $0`)
# echo $ROOT_DIR
/root

উত্তর:


16

এটি ব্যবহারকারীর লগইন শেলের মতো একই ত্রুটি হওয়া উচিত, কারণ লগইন শেলটিতে 0শেল প্যারামিটার, বর্তমান প্রক্রিয়াটির নামে প্রসারিত -bash, লগইন শেলকে বিয়োগ করে বিয়োগ করে। আপনি এখন দেখুন -bত্রুটিটি কোথা থেকে এসেছে।

পরিবর্তে চেষ্টা করুন

echo "$( dirname "$(readlink -f -- "$0")" )"

কী --( "বিয়োগ বিয়োগ" বা "ড্যাশ ড্যাশ") ইঙ্গিত? কিছুই নয় - উত্তরটি আমি এখানে পেয়েছি: /unix//q/11376
অসুলিক

3

আপনি যদি সত্যিই চালিত শেল স্ক্রিপ্টের ডিরেক্টরি নামটি চান:

script_dir="$(dirname -- "$(readlink -f -- "$0")")"

হ্যাঁ, এটি কিছুটা ক্লডজি তবে এটি নিরাপদ।

আপনি যদি বর্তমান শেলটি চান, আপনি @ মাইকেলমরোজেকের ব্যবহারের পরামর্শটি চেষ্টা করতে পারেন $SHELL

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