উত্তর:
আপনি ব্যবহার করতে পারেন eval
:
eval echo ~$USER
তবে নীচে অ্যান্ড্রুয়ের মন্তব্য এবং গ্লেনের জবাব দেখুন।
eval echo "~$USER"
যদি এমন ধারনা তৈরি করছেন $USER
যা শেলটি ব্যাখ্যা করতে পারে এমন কোনও বিশেষ অক্ষর নেই। উদাহরণস্বরূপ, যদি USER="foo\$bar"
, তবে আমরা যখন eval
শেলটি $bar
আপনার আউটপুটটিতে প্রতিস্থাপন করব যা আপনি চান তা নয়। মূলত, আপনি যদি এই রুটটি গ্রহণ করেন তবে আপনাকে নিশ্চিত হওয়া দরকার যে $USER
এটি বুদ্ধিমান ইনপুট। বেশিরভাগ সময় এটি সম্ভবত থাকবে তবে আপনার এটি মনে রাখা উচিত।
এটি আপনার পক্ষে কাজ করতে পারে:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
এটি এমন ব্যবহারকারীদের ক্ষেত্রেও কাজ করবে যারা আপনি নন। এই ক্ষেত্রে,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
অবস্থানের অবস্থানটি ধরে নেওয়ার পরিবর্তে ব্যবহার করা passwd
বাড়ির অবস্থান অনুমানের চেয়ে আরও এক ধাপ এগিয়ে/home/
দেখে মনে হচ্ছে আপনি সেই ব্যবহারকারী - কেন নয়
echo $HOME
?
আমি জানি না এটি সাহায্য করে কিনা, তবে অভিব্যক্তির বাইরে টিলড স্থাপন জেডএসএইচে কাজ করে তবে বাশকে নয়:
echo ~`echo $USER`
আপনি লগইন হয়ে গেলে, cd
আপনার হোম ডিরেক্টরিতে যেতে রান করুন, তারপরে pwd
ওয়ার্কিং ডিরেক্টরি মুদ্রণের জন্য রান করুন ।
echo $HOME
।
echo ~$username
এটি ঠিক আছে তবে