Je veux ouvrir une nouvelle fenêtre de terminal à l'emplacement actuel par simple commande dans Ubuntu
gnome-terminal --working-directory=`pwd` & disown
Le travail est agréable pour moi. Mais quand je mets alias à bashrc
alias clone="gnome-terminal --working-directory=`pwd` & disown "
pwd
Calculé au début. Donc, je reçois quelque chose comme.
$ type clone
clone is aliased to `gnome-terminal --working-directory=/home/user & disown '
Est-il possible que pwd
ne calcule que lorsque j'appelle un alias. Ou j'ai besoin d'écrire la fonction bash sauf alias?
Utilisez simplement des guillemets simples autour de la commande de déclaration alias
pour que la substitution de commande (pwd
) ne se produise pas lors de la déclaration (et ne se développera que lorsque l'alias sera appelé):
alias clone='gnome-terminal --working-directory=`pwd` & disown'
Commencez également à utiliser la syntaxe de substitution de commande $()
à la place d'ancien et problématique ``
:
alias clone='gnome-terminal --working-directory="$(pwd)" & disown'
Notez également que gnome-terminal
est conçu de manière à ce que chaque fois que vous le faites.
gnome-terminal
cela ouvrirait une nouvelle fenêtre avec le même PID que celui d'origine. C’est parce que c’est le même processus par conception, la sortie de l’un ne tuera pas l’autre (s). Donc, vous n'avez pas besoin de disown
et d'arrière-plan (&
), mais simplement:
alias clone='gnome-terminal --working-directory="$(pwd)"'
ferait.
De plus, comme l'a souligné @ Digital Trauma, gnome-terminal
commence toujours par le répertoire de travail en cours, donc --working-directory
n'est pas nécessaire, car vous le définissez comme pwd
. Donc vous pouvez juste faire:
alias clone='gnome-terminal'