質問: シェルスクリプトがそのフォルダ以外の場所で呼び出されるのをブロックするにはどうすればよいですか? ユーザーが現在シェルスクリプトディレクトリにいない場合は、シェルスクリプトを停止したいと思います。たとえば、フォルダ_~/_にいて、シェルスクリプトを_~/shell/script.sh_と呼ぶと、シェルスクリプトは_you are not allowed to call this shell script from another folder other than its directory_を出力するはずです。しかし、私が_~/shell_フォルダーにいて、_./script.sh_を呼び出すと、実行が許可されます。 なぜ_$pwd_が何であるかを気にするのですか?重要な場合は、スクリプト内のディレクトリを変更できます。cd "$(dirname "$0")" これは非常にローカルな攻撃的/危険なスクリプトであるため、スクリプトの実行中は、ユーザーがフォルダーに存在し、より注意を払ってほしいと思います。関連する質問: bashスクリプトがシェルまたは別のスクリプト/アプリケーションから呼び出されたかどうかを確認してください ターミナルから直接呼び出された場合は実行可能ファイルが起動しますが、シェルスクリプトから呼び出された場合は機能しません
回答: @grawityに感謝します、私はこれを書きました:# call the main function, as when running from the command line the `$0` variable is # not empty. # # importing functions from a shell script # https://stackoverflow.com/questions/12815774/importing-functions-from-a-shell-script if ! [[ -z "$0" ]] then # reliable way for a bash script to get the full path to itself? # http://stackoverflow.com/questions/4774054/reliable-way-for-a-bash-script-to-get pushd `dirname $0` > /dev/null script_folder_path=`pwd` popd > /dev/null if[[ "$script_folder_path" == "$(pwd)" || "$script_folder_path" == "$(dirname "$0")" ]] then main "$@" else printf "you cannot run this from the folder: \n'$(pwd)'\n" printf "\nplease, run this script from its folder on: \n'$script_folder_path'\n" fi fi