GNU/Linux >> Znalost Linux >  >> Linux

Určení cesty ke zdrojovému skriptu Shell?

Existuje způsob zdroje shell skript, aby zjistil cestu k sobě? Zajímá mě hlavně bash, i když mám několik spolupracovníků, kteří používají tcsh.

Hádám, že zde možná nebudu mít štěstí, protože získávání zdrojů způsobuje, že se příkazy spouštějí v aktuálním shellu, takže $0 je stále vyvoláním aktuálního shellu, nikoli zdrojovým skriptem. Moje nejlepší myšlenka je udělat source $script $script , takže první poziční parametr obsahuje potřebné informace. Má někdo lepší způsob?

Aby bylo jasno, sourcing skript, nikoli jeho spuštění:

source foo.bash

Přijatá odpověď:

V tcsh , $_ na začátku skriptu bude obsahovat umístění, pokud byl soubor zdrojem, a $0 obsahuje, pokud byl spuštěn.

#!/bin/tcsh
set sourced=($_)
if ("$sourced" != "") then
    echo "sourced $sourced[2]"
endif
if ("$0" != "tcsh") then
    echo "run $0"
endif

V Bash:

#!/bin/bash
[[ $0 != $BASH_SOURCE ]] && echo "Script is being sourced" || echo "Script is being run"

Linux
  1. Určit prostředí ve skriptu za běhu?

  2. Procesy v relaci v interaktivním prostředí versus ve skriptu?

  3. Jak napsat automaticky generovaný skript Shell do /etc/profile?

  1. Časový limit ve skriptu Shell?

  2. Transliterační skript pro linuxové prostředí

  3. Spusťte skript prostředí jako jiný uživatel

  1. Shebangy nezávislé na cestě?

  2. Význam $? Ve skriptu Shell?

  3. Shell Script pro tisk pyramidy hvězd