Di ~/.bashrc
saya file berada dalam dua definisi:
commandA
, yang merupakan alias ke jalur yang lebih panjangcommandB
, yang merupakan alias untuk skrip Bash
Saya ingin memproses file yang sama dengan dua perintah ini, jadi saya menulis skrip Bash berikut:
#!/bin/bash
for file in "[email protected]"
do
commandA $file
commandB $file
done
Bahkan setelah keluar dari sesi saya dan masuk kembali, Bash meminta saya dengan command not found
kesalahan untuk kedua perintah saat saya menjalankan skrip ini.
Apa yang saya lakukan salah?
Jawaban yang Diterima:
Pertama-tama, seperti yang dikatakan ddeimeke, alias secara default tidak diperluas di shell non-interaktif.
Kedua, .bashrc
tidak dibaca oleh shell non-interaktif kecuali Anda mengatur BASH_ENV
variabel lingkungan.
Tapi yang paling penting:jangan lakukan itu! Tolong? Suatu hari Anda akan memindahkan skrip itu ke suatu tempat di mana alias yang diperlukan tidak disetel dan itu akan rusak lagi.
Alih-alih, tetapkan dan gunakan variabel sebagai pintasan dalam skrip Anda:
#!/bin/bash
CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh
for file in "[email protected]"
do
$CMDA "$file"
$CMDB "$file"
done