GNU/Linux >> Linux Esercitazione >  >> Linux

Perché lo script Bash non riconosce gli alias?

Nel mio ~/.bashrc file risiedono due definizioni:

  1. commandA , che è un alias per un percorso più lungo
  2. commandB , che è un alias di uno script Bash

Voglio elaborare lo stesso file con questi due comandi, quindi ho scritto il seguente script Bash:

#!/bin/bash

for file in "[email protected]"
    do
    commandA $file
    commandB $file
done

Anche dopo essere uscito dalla mia sessione e aver effettuato nuovamente l'accesso, Bash mi chiede command not found errori per entrambi i comandi quando eseguo questo script.

Cosa sbaglio?

Risposta accettata:

Innanzitutto, come diceva ddeimeke, gli alias di default non sono espansi nelle shell non interattive.

Secondo, .bashrc non viene letto da shell non interattive a meno che non imposti il ​​BASH_ENV variabile di ambiente.

Ma soprattutto:non farlo! Per favore? Un giorno sposterai lo script in un punto in cui non sono impostati gli alias necessari e si romperà di nuovo.

Invece, imposta e usa le variabili come scorciatoie nel tuo script:

#!/bin/bash

CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh

for file in "[email protected]"
do
    $CMDA "$file"
    $CMDB "$file"
done

Linux
  1. Uno script Bash può essere agganciato a un file?

  2. Script Bash:controlla se un file è un file di testo?

  3. Perché il file di traduzione Bash non contiene tutti i testi di errore?

  4. Perché Ls -l non mostra l'ora e l'anno per ogni file??

  5. Perché non riesco a sfuggire agli spazi su uno script Bash??

35 Esempi di script Bash

Alternativa a "dd" che non tronca il file?

Perché lo script Bash non si chiude dopo l'esecuzione?

Perché non posso usare Cd in uno script Bash??

Script Bash:pessimo interprete

Script Bash per rimuovere il file più vecchio da una cartella