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 $barne zaman istediğin olmayan çıktının yerine geçecektir . Temel olarak, bu rotayı takip ederseniz, $USERbunun 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 )
getenvolduğ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 ~$usernamedeğişken ise sorun yok, ama sh eval gereklidir