Jika Anda tidak ingin cd
menempel setelah penggantian alias, gunakan subkulit dengan (
y )
:
alias my_x="(cd /home/path_to_x && ./x)&"
Anda dapat memeriksanya
alias test_y="(cd /tmp && sleep 10 ) & "
Perhatikan solusinya
alias my_y="/home/path_to_x/x"
tidak persis sama. Bahkan, jika dipanggil via my_x
, x
program dijalankan dengan direktori saat ini /home/path_to_x/
, sedangkan jika dipanggil oleh my_y
, x
dijalankan dengan direktori saat ini yang merupakan tempat di mana perintah my_y
itu dikeluarkan. Ini bisa penting atau tidak tergantung pada apa x
yang dilakukan.
Tentang solusi OP , ia bekerja di 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
tapi tidak di 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] %
Tampaknya bash dan zsh mengeksekusi daftar dengan cara yang berbeda ... jadi lebih baik menambahkan tanda kurung eksplisit ... terima kasih @EliahKagan karena menunjukkannya kepada saya.
alias x='/home/path_to_x/x'
. Jangan gunakan.
sebelumnya/home
..
(dot) merujuk ke direktori saat ini.