V mém ~/.bashrc
soubor obsahuje dvě definice:
commandA
, což je alias pro delší cestucommandB
, což je alias skriptu Bash
Chci zpracovat stejný soubor pomocí těchto dvou příkazů, proto jsem napsal následující skript Bash:
#!/bin/bash
for file in "[email protected]"
do
commandA $file
commandB $file
done
I po odhlášení z relace a opětovném přihlášení mě Bash vyzve command not found
chyby pro oba příkazy při spuštění tohoto skriptu.
Co dělám špatně?
Přijatá odpověď:
Za prvé, jak řekl ddeimeke, aliasy ve výchozím nastavení nejsou rozbaleny v neinteraktivních shellech.
Za druhé, .bashrc
není čtena neinteraktivními shelly, pokud nenastavíte BASH_ENV
proměnná prostředí.
Ale hlavně:nedělejte to! Prosím? Jednoho dne ten skript přesunete někam, kde nejsou nastaveny potřebné aliasy, a zase se rozbije.
Místo toho nastavte a použijte proměnné jako zkratky ve skriptu:
#!/bin/bash
CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh
for file in "[email protected]"
do
$CMDA "$file"
$CMDB "$file"
done
Citace v rámci $(příkazová substituce) v Bash?
Jak přesunout všechny soubory (včetně skrytých) z jednoho adresáře do druhého?