GNU/Linux >> Linux の 問題 >  >> Linux

ソースシェルスクリプトへのパスを決定しますか?

ソースの方法はありますか それ自体へのパスを見つけるためのシェルスクリプト?私は主にbashに関心がありますが、tcshを使用する同僚がいます。

ソーシングによってコマンドが現在のシェルで実行されるため、ここではあまり運がないかもしれないと思います。したがって、$0 ソーススクリプトではなく、現在のシェルの呼び出しです。私の現在の最善の考えは、source $script $scriptを実行することです。 、最初の位置パラメータに必要な情報が含まれるようにします。誰かもっと良い方法がありますか?

明確にするために、私はソーシングしています スクリプトを実行していない:

source foo.bash

承認された回答:

tcshで 、$_ スクリプトの先頭には、ファイルがソースされた場合の場所と$0が含まれます 実行された場合は含まれます。

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

Bashの場合:

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

Linux
  1. 星のピラミッドを出力するシェルスクリプト

  2. シェルスクリプトの並列実行

  3. パスに bash スクリプトを追加する

  1. UbuntuのPATH変数はどこに設定されていますか?

  2. .sh ファイルがマルウェアになる可能性はありますか?

  3. 実行時にスクリプトでシェルを決定する

  1. 実行時にスクリプトでシェルを決定しますか?

  2. インタラクティブシェルのセッションのプロセスとスクリプトのプロセス?

  3. 別のユーザーとしてシェル スクリプトを実行する