GNU/Linux >> Znalost Linux >  >> Linux

Odkud se spouští skript Shell?

Mám shell skript v /usr/bin . Říkejme tomu hello .

Obsahuje toto:

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

Spouští se hello z /home/Documents Očekávám následující výstup:

 I am located in /usr/bin
 I am called from this directory: /home/Documents

Jak mohu získat cestu k adresáři, ze kterého je skript spouštěn?

Přijatá odpověď:

Jinou odpověď nemohu komentovat, proto píšu sem. Jak již bylo řečeno, dirname čte pouze $0 a převezme název adresáře, takže pokud jste zavolali něco jako ../../directory/something.sh nevyřeší tyto tečky, ale pouze vrátí ../../directory . Namísto použití rozšíření subshell pomocí cd a pwd , můžete použít velmi chytrý příkaz readlink to ve skutečnosti řeší nejen tečkované adresáře, ale také všechny symbolické odkazy. Proto navrhuji

  echo "I am located at $(readlink -e -- "$0")"

Můžete použít jiný dirname kolem tohoto získáte adresář místo souboru.


Linux
  1. Jak spustíte skript při přihlášení v *nix?

  2. Jak spustím program s jiným pracovním adresářem, než je aktuální, z prostředí Linux?

  3. Změňte pracovní adresář v shellu pomocí python skriptu

  1. Jak spustit skript shellu, když se změní soubor nebo adresář?

  2. Paralelní spuštění skriptu shellu

  3. Aktuální adresář skriptu Shell?

  1. Spuštění skriptu z stdin (Linux/Shell Scripting)

  2. Jak spustit skript shellu při spuštění

  3. Spusťte shell skript v novém terminálu z aktuálního terminálu