GNU/Linux >> Belajar Linux >  >> Linux

Menentukan Jalur Ke Skrip Shell Bersumber?

Apakah ada cara untuk bersumber skrip shell untuk mengetahui jalur ke dirinya sendiri? Saya terutama peduli dengan bash, meskipun saya memiliki beberapa rekan kerja yang menggunakan tcsh.

Saya kira saya mungkin tidak memiliki banyak keberuntungan di sini, karena sumber menyebabkan perintah dieksekusi di shell saat ini, jadi $0 masih merupakan permintaan Shell saat ini, bukan skrip yang bersumber. Pikiran terbaik saya saat ini adalah melakukan source $script $script , sehingga parameter posisi pertama berisi informasi yang diperlukan. Adakah yang punya cara yang lebih baik?

Untuk lebih jelasnya, saya sumber skrip, tidak menjalankannya:

source foo.bash

Jawaban yang Diterima:

Dalam tcsh , $_ di awal skrip akan berisi lokasi jika file itu bersumber dan $0 berisi itu jika dijalankan.

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

Di Bash:

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

Linux
  1. Bagaimana Cara Menulis Skrip Shell yang Bersumber Secara Otomatis Ke /etc/profile?

  2. Arti dari $? Dalam Skrip Shell?

  3. Menjalankan skrip shell secara paralel

  1. Direktori skrip Shell saat ini?

  2. Tambahkan skrip bash ke jalur

  3. Di mana variabel PATH diatur di Ubuntu?

  1. Tentukan Shell In Script Selama Runtime?

  2. Bisakah file .sh menjadi malware?

  3. Jalankan skrip shell sebagai pengguna yang berbeda