Si no desea cd
que se pegue después de la sustitución de alias, use una subshell con (
y )
:
alias my_x="(cd /home/path_to_x && ./x)&"
puedes consultarlo con
alias test_y="(cd /tmp && sleep 10 ) & "
Tenga en cuenta que la solución
alias my_y="/home/path_to_x/x"
No es exactamente equivalente. De hecho, si se llama a través de my_x
, el x
programa se ejecuta con un directorio actual /home/path_to_x/
, mientras que si se llama por my_y
, x
se ejecuta con un directorio actual que es donde my_y
se emitió el comando . Esto puede ser importante o no, dependiendo de lo que x
esté haciendo.
Sobre la solución OP , funciona en bash
:
romano@RRyS:~$ pwd
/home/romano
romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &"
romano@RRyS:~$ x
[1] 16611
romano@RRyS:~$ pwd
/home/romano
pero no en zsh
:
[romano:~] % pwd
/home/romano
[romano:~] % alias x="cd /bin && ./echo A >/dev/null &"
[romano:~] % x
[1] 16744
[1] + 16744 done ./echo A > /dev/null
1& [romano:/bin] % pwd
/bin
[romano:/bin] %
Parece que bash y zsh ejecutan listas de diferentes maneras ... así que es mejor agregar el paréntesis explícito ... gracias @EliahKagan por señalarme.
alias x='/home/path_to_x/x'
. No lo uses.
antes/home
..
(punto) se refiere al directorio actual.