ব্যবহারকারীর নাম অনুসারে হোম ডিরেক্টরি পান


84

প্রতিধ্বনি সহ যে কোনও ব্যবহারকারীর হোম ডির পেতে চাই

echo ~puchuu
>> /home/puchuu

তবে আমি ভেরিয়েবল ব্যবহার করতে পারি না

echo ~$USER
>> ~puchuu
echo `echo ~$USER`
>> ~puchuu

উত্তর:


86

আপনি ব্যবহার করতে পারেন eval:

eval echo ~$USER

তবে নীচে অ্যান্ড্রুয়ের মন্তব্য এবং গ্লেনের জবাব দেখুন।


8
বাশ-এভাল-এ এটির প্রয়োজন হয় না ঠিক echo ~$usernameএটি ঠিক আছে তবে
শেরে ওভালের

এটি কখনও কখনও ভুল মান দেয়, সম্ভবত একই ব্যবহারকারীর সাথে পূর্বের অ্যাকাউন্টের হোম ফোল্ডারটি?
অ্যান্ড্রু

@ অ্যান্ড্রুম্যাকফি: "আগের" বলতে কী বোঝ?
চোরোবা

1
@ চোরোবা কোনও ব্যবহারকারী যুক্ত করুন, ব্যবহারকারীকে মুছুন, তারপরে একই ব্যবহারকারীর ব্যবহারকারী যুক্ত করুন। যদি ব্যবহারকারীর হোম ফোল্ডারটি দ্বিতীয়বার আলাদা হয় তবে এই কমান্ডটি বর্তমানের চেয়ে মূল হোম ফোল্ডারটি দেয়। গ্লেন জ্যাকম্যানের উত্তরটি বর্তমানটিকে দেয়।
অ্যান্ড্রু

আরও মনে রাখবেন যে আপনি eval echo "~$USER"যদি এমন ধারনা তৈরি করছেন $USERযা শেলটি ব্যাখ্যা করতে পারে এমন কোনও বিশেষ অক্ষর নেই। উদাহরণস্বরূপ, যদি USER="foo\$bar", তবে আমরা যখন evalশেলটি $barআপনার আউটপুটটিতে প্রতিস্থাপন করব যা আপনি চান তা নয়। মূলত, আপনি যদি এই রুটটি গ্রহণ করেন তবে আপনাকে নিশ্চিত হওয়া দরকার যে $USERএটি বুদ্ধিমান ইনপুট। বেশিরভাগ সময় এটি সম্ভবত থাকবে তবে আপনার এটি মনে রাখা উচিত।
জোড়োয়ার

65

এটি আপনার পক্ষে কাজ করতে পারে:

homedir=$( getent passwd "$USER" | cut -d: -f6 )

এটি এমন ব্যবহারকারীদের ক্ষেত্রেও কাজ করবে যারা আপনি নন। এই ক্ষেত্রে,

homedir=$( getent passwd "someotheruser" | cut -d: -f6 )

এটি বৈধতা, getenvঅবস্থানের অবস্থানটি ধরে নেওয়ার পরিবর্তে ব্যবহার করা passwdবাড়ির অবস্থান অনুমানের চেয়ে আরও এক ধাপ এগিয়ে/home/
ইভান ক্যারল

13

দেখে মনে হচ্ছে আপনি সেই ব্যবহারকারী - কেন নয়

echo $HOME

?


3
যদি আপনি একটি sud'ed পরিবেশে থাকেন এবং su--H অথবা -i ফ্ল্যাগগুলি না দিয়ে থাকেন তবে এটি কাজ করবে না - OME হোম এখনও পূর্বের (sudo'ing) ব্যবহারকারীর হোম ডিরেক্টরি হবে।
আসফান্দ কাজী

1

আমি জানি না এটি সাহায্য করে কিনা, তবে অভিব্যক্তির বাইরে টিলড স্থাপন জেডএসএইচে কাজ করে তবে বাশকে নয়:

echo ~`echo $USER`

0

আপনি লগইন হয়ে গেলে, cdআপনার হোম ডিরেক্টরিতে যেতে রান করুন, তারপরে pwdওয়ার্কিং ডিরেক্টরি মুদ্রণের জন্য রান করুন ।


এটি কাজ করে না; এখানে ধারণাটি হ'ল শেল স্ক্রিপ্টে এটি করা, এবং সম্ভবত প্রশ্নে থাকা ব্যবহারকারীর শংসাপত্রের প্রয়োজন ছাড়াই ...
সাম্ব

-১ একই কারণে সাম্ব উল্লেখ করেছেন। আমি আপনার উত্তরটি সম্পাদনা করেছি কারণ আমি চাই আপনি কীভাবে মার্কডাউন ফর্ম্যাটিং ব্যবহার করবেন এবং আরও সংক্ষিপ্ত হয়ে উঠুন। আপনি খুব সহজ পদ্ধতিটিও মিস করেছেন, যা সঠিক echo $HOME
wjandrea
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.