端末がシェルスクリプトコマンドを認識できない

端末がシェルスクリプトコマンドを認識できない

私のシステムのプロキシ設定を更新するシェルスクリプトがあります。

chmod +x filename.sh正常に動作するコマンドを実行してみました。その後、./filename.sh端末で実行しましたが、正常に実行されました。このシェルスクリプトにはいくつかのヘルパーメソッドが含まれており、それを実行しようとすると表示されます-bash: unload_proxy: command not foundここに画像の説明を入力してください。

ここに画像の説明を入力してください。

答え1

filename.sh定義を含める場合、またはショートカットをunload_proxy使用する必要があります。source ./filename.sh. ./filename.sh

ファイルを入手すると、現在のシェル環境で評価され、新しい機能を定義できます。

あなたの例では、ファイルを直接実行します(例:いいえ出所)、事件の順番は次のとおりです。

  1. この説明の目的に応じて、現在のシェルのコピーとほぼ同じ新しい環境を含む新しいbashシェルを作成します(一部のオプションとオブジェクトの定義方法によって異なります)。

  2. スクリプトはこの新しいシェルで実行され、その環境で機能を定義します。

  3. スクリプトが終了し、ここで定義されている関数の新しいシェルも終了します。

  4. コントロールは、関数が定義されていない元のシェルに返されます。

として実行すると、source ./filename.sh新しいシェルが起動しないため、手順2のみが発生し、現在のシェルで発生します。

*ファイルが正しいと仮定シェルボーン、例えば#!/usr/bin/env bash

関連情報