web-dev-qa-db-fra.com

Méthode appropriée pour adresser le répertoire de base d'un utilisateur

Je crée un menu de dialogue pour un VPN Ubuntu qui appelle d'autres scripts comme celui-ci:

cd
cd myrepo/gui
./filetocall.sh

La première cd consiste à s’assurer que le répertoire de la seconde cd est toujours la maison.

Existe-t-il une meilleure méthode que je puisse utiliser pour résoudre ce problème en une seule ligne? (Sans nommer spécifiquement l'utilisateur dans le chemin, il peut donc être installé et utilisé sur quelques appareils?)

2
user797940

~ (tilde) ou $HOME peut être utilisé pour obtenir le répertoire de base de l'utilisateur actuel. Vous pouvez ainsi:

cd ~/myrepo/gui
cd "$HOME/myrepo/gui"

Ou même l'exécuter directement:

~/myrepo/gui/filetocall.sh
"$HOME"/myrepo/gui/filetocall.sh
6
user894105

Utilisez la même méthode utilisée par login, ce qui évite de se faire avoir par les redéfinitions de $HOME:

homedir="$(getent passwd $( /usr/bin/id -u ) | cut -d: -f6)"
cd "$homedir"
6
waltinator

cd ~/myrepo/gui fera l'affaire, ou un peu plus longtemps: cd $HOME/myrepo/gui.

~ est un raccourci Shell pour le répertoire de base des utilisateurs, $ HOME est une variable définie par le Shell pour le même.

3
Soren A