GNU/Linux >> Linux Esercitazione >  >> Linux

Esecuzione dello script con ". ” E con “fonte”?

  1. Mi chiedevo se i seguenti due modi di eseguire uno script bash
    sono equivalenti?

    . ./myScript.sh
    
    source myScript.sh
    
  2. Entrambi stanno eseguendo il contenuto dello script invece di eseguire lo script, ovvero non stanno creando una subshell per eseguire lo script?

Risposta accettata:

  1. Sono equivalenti in bash in quanto fanno esattamente la stessa cosa. D'altra parte, source è più lungo di 5 caratteri e non è portabile su shell solo POSIX o Bourne mentre . (punto) lo è, quindi non mi preoccupo mai di usare source .

  2. È corretto:l'acquisizione di un file esegue i comandi nella shell corrente e influenzerà l'ambiente della shell corrente. Puoi ancora passare argomenti al file sorgente e bash cercherà effettivamente in $PATH per il nome del file proprio come un normale comando se non contiene barre.

Non correlato alla domanda originale di . rispetto a source , ma nel tuo esempio,

. ./myScript.sh 

non è identico a

source myScript.sh

perché mentre . e source sono funzionalmente identici, myScript.sh e ./myScript.sh non sono la stessa cosa. Da ./myScript.sh contiene una barra, viene interpretato come un percorso e la shell usa solo ./myScript.sh . Tuttavia, myScript.sh non ha una barra quindi la shell esegue un $PATH cercalo prima. Questo è il comportamento standard specificato da POSIX per . . La maggior parte delle shell ha questa impostazione predefinita, sebbene possano aggiungere estensioni (come la ricerca nella directory di lavoro corrente dopo la ricerca del percorso) o opzioni per modificare il comportamento di . /source .


Linux
  1. Come acquisire le sessioni del terminale e l'output con il comando di script Linux

  2. Registra il tuo terminale con script e scriptreplay

  3. Impedire l'esecuzione simultanea di uno script bash

  4. Shell Script Wrapper per impedire l'esecuzione di comandi senza argomenti?

  5. Come aggiungere automaticamente account utente E password con uno script Bash?

Mappe mentali open source con Draw.io

Trasferisci file tra il tuo telefono e Linux con questo strumento open source

Introduzione a differenze e patch

Come scrivere uno script Bash con esempi

Domotica:Running Home Assistant con Podman

Linux Script per verificare se il processo è in esecuzione e agire sul risultato