Якщо ви не хочете, cd
щоб прикріплення залишалося після підстановки псевдоніму, використовуйте нижню оболонку з (
у )
:
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
робиш.
Щодо рішення ОП , воно працює в 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
..
(крапка) посилається на поточний каталог.