多くの機能を含むbashスクリプトがあります。このスクリプトをbashを使用して実行したいと思います。スクリプトの上部には以下が含まれます。
echo "BASH_VERSION""$BASH_VERSION"
echo "ZSH_VERSION""$ZSH_VERSION"
現在ZSHで実行されているスクリプトを表示できます。
Bashを使用してスクリプトをどのように実行しますか?すでに#!/usr/bin/env bash
ファイルの先頭にありますが、まだ機能していません。私はそれを使用していますsource
。
答え1
source
次のようにスクリプトを実行すると、現在のスクリプトの-lineが何を言っているかに関係なく、シェル環境です#!
(この行はコメントにすぎず、この場合は無視されます)。それがまさにそのことですsource
。
コマンドラインにスクリプトパスと名前(たとえば)を指定してスクリプトを実行すると、ファイルが実行可能であると仮定すると、スクリプトの先頭の-line./myscript
に記載されているインタプリタによって実行されます#!
。ファイルの関数定義、変数などは、スクリプトの実行中にアクティブになりますが、スクリプトが終了すると、残りのスクリプト環境とともに削除されます。
現在のシェル環境内でアクセスしたい関数の定義がスクリプトファイルに含まれていて、ファイルzsh
の関数がシェル互換の方法で作成されている場合は、スクリプトzsh
ファイルを取得することが適切です。
関数がbash
シェルに対して明示的に作成されている場合(特定の変数bash
などを使用)、アプリケーションの残りの部分を別々のスクリプトbash
として作成し、関数を使用してそのスクリプト内からファイルをインポートできます。または、シェルの機能をオーバーライドしてから、シェルでオーバーライドされた関数定義をインポートすることもできzsh
ますzsh
。