web-dev-qa-db-fra.com

Alias ​​Bash - Comment puis-je exécuter un fichier dans un autre dossier sans perdre mon emplacement actuel?

J'ai un joli petit alias bash dans mon dossier .bashrc qui me permet de lancer Tomcat sans avoir à commencer par le cd, par ex.

alias startTomcat="cd ~/Apache-Tomcat-7.0.34/bin/ && ./startup.sh"

Cependant, lorsque je lance startTomcat dans un terminal, je suis démarré à partir du dossier dans lequel j'ai démarré et mon terminal réside maintenant dans ~/Apache-Tomcat-7.0.34/bin/. C'est le comportement attendu, bien sûr, mais ce que je voudrais faire est d'exécuter la commande sans se retrouver dans un autre dossier.

Puis-je soit enregistrer l'emplacement d'origine, puis y revenir dans mon fichier .bashrc, ou bien exécuter startup.sh sans que cd ne sorte du dossier d'origine?

Merci!!

4
yochannah

Vous pouvez utiliser le chemin absolu pour startup.sh sans to cd dans le dossier où se trouve ::

alias startTomcat="~/Apache-Tomcat-7.0.34/bin/startup.sh"

Ou, vous pouvez utiliser cd - qui vous ramènera au répertoire où vous étiez la dernière fois:

alias startTomcat="cd ~/Apache-Tomcat-7.0.34/bin/ && ./startup.sh && cd -"
9
Radu Rădeanu

La réponse de Radu est bonne, mais selon le cas d'utilisation, vous souhaiterez peut-être utiliser pushd et popd, ce qui vous permettra de sauvegarder et de restaurer des répertoires. Quelque chose comme: alias startTomcat="pushd ~/Apache-Tomcat-7.0.34/bin; ./startup.sh; popd"

2
Joshua Snider