Если вы не хотите, cd
чтобы после замены псевдонима вставлялось, используйте подоболочку с (
y )
:
alias my_x="(cd /home/path_to_x && ./x)&"
Вы можете проверить это с
alias test_y="(cd /tmp && sleep 10 ) & "
Обратите внимание, что решение
alias my_y="/home/path_to_x/x"
не совсем эквивалентно. В самом деле, если вызывается через my_x
, то x
программа запускается с текущим каталогом /home/path_to_x/
, в то время как если вызывается my_y
, x
выполняется с текущим каталогом , который является тот , в котором команда my_y
была выдана. Это может быть важно или нет в зависимости от того, что x
делает.
Что касается решения OP , оно работает в 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
но не в 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] %
Кажется, что bash и zsh выполняют списки по-разному ... так что лучше добавить явные скобки ... спасибо @EliahKagan за указание его мне.
alias x='/home/path_to_x/x'
. Не используйте.
раньше/home
..
(точка) относится к текущему каталогу.