Yanıtlar:
Kullanabilirsiniz eval
:
eval echo ~$USER
eval echo "~$USER"
varsayımı yapıyorsanız unutmayın $USER
. Örneğin, eğer USER="foo\$bar"
öyleyse eval
, kabuk $bar
ne zaman istediğin olmayan çıktının yerine geçecektir . Temel olarak, bu rotayı takip ederseniz, $USER
bunun aklı başında bir girdi olduğundan emin olmanız gerekir . Muhtemelen çoğu zaman olacak, ama bunu aklınızda tutmalısınız.
Bu sizin için işe yarayabilir:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
Bu aynı zamanda siz olmayan kullanıcılar üzerinde de çalışacaktır. Örneğin,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
olduğunu varsaymak yerine kullanmak passwd
, ev konumunun varsayılmasından bir adım daha olduğunu varsaymaktır/home/
Görünüşe göre o kullanıcı değilsin - neden olmasın
echo $HOME
?
İşe yarayıp yaramadığını bilmiyorum ama ifadeyi dışa yerleştirmek ZSH'de çalışıyor, ancak Bash'de değil:
echo ~`echo $USER`
Giriş yaptıktan sonra cd
, ana dizininize gitmek için çalıştırın, ardından pwd
çalışma dizinini yazdırmak için çalıştırın .
echo $HOME
.
echo ~$username
değişken ise sorun yok, ama sh eval gereklidir