जवाबों:
आप उपयोग कर सकते हैं 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
ठीक है के साथ की जरूरत नहीं है , लेकिन sh में eval की जरूरत है अगर एक चर है