ソースせずにBashスクリプトから環境に変数をエクスポートできますか? 質問する

ソースせずにBashスクリプトから環境に変数をエクスポートできますか? 質問する

次のようなスクリプトがあるとします。

エクスポート.bash :

#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"

スクリプトを実行して にアクセスしようとすると$VAR、値が得られません。

echo $VAR

$VARソース化せずに実行するだけでアクセスする方法はありますかexport.bash?

ベストアンサー1

$VARソース化せずに実行するだけでアクセスする方法はありますかexport.bash?

簡単に答えると、いいえです。

しかし、回避策はいくつか考えられます。

すでに述べたように、最も明白な方法は、呼び出しシェルのコンテキストでスクリプトを使用するsourceか、実行することです。.

$ cat set-vars1.sh 
export FOO=BAR
$ . set-vars1.sh 
$ echo $FOO
BAR

別の方法としては、環境変数を設定するのではなく、スクリプトで環境変数を設定するコマンドを印刷する方法があります。

$ cat set-vars2.sh
#!/bin/bash
echo export FOO=BAR
$ eval "$(./set-vars2.sh)"
$ echo "$FOO"
BAR

3 番目のアプローチは、環境変数を内部的に設定し、その環境で指定されたコマンドを呼び出すスクリプトを使用することです。

$ cat set-vars3.sh
#!/bin/bash
export FOO=BAR
exec "$@"
$ ./set-vars3.sh printenv | grep FOO
FOO=BAR

この最後のアプローチは非常に便利ですが、現在のシェルの設定(これまでに構築した他のすべての設定と履歴を含む)が提供されないため、対話型の使用には不便です。

おすすめ記事