web-dev-qa-db-ja.com

bashスクリプトのソースファイル

ROSの2つのバージョンを隣り合わせで使用しています。これを使用するには、特定のバージョンの環境変数を入手する必要があります。これを行うスクリプトを作成したいと思います。しかし、次のようなスクリプトを作成すると、変数は設定されず、おそらくサブシェルで設定されます。ファイルをメインターミナルシェルにソースするにはどうすればよいですか?

source.sh:

source /opt/ros/fuerte/setup.bash;
source  ~/fuerte_workspace/setup.bash;

Source.shを呼び出す方法は次のとおりです。

./source.sh
# This does not echo anything, but I expect it should
echo $ros_config

更新:回答で提案されているようにsource.shをソースすることで、変数が設定されていることがわかります。

source ./source.sh
# This works now
echo $ros_config
45
user408041

。/(ドットスペースドットスラッシュ)を使用してシェルスクリプトを実行

以下に示すように、“dot space dot slash”を使用してシェルスクリプトを実行すると、サブシェルをフォークせずに現在のシェルでスクリプトを実行します。

$ . ./setup.bash

つまり、これにより、現在のシェルのsetup.bashで指定されたコマンドが実行され、環境が準備されます。

80
MangeshBiradar

current Shellのスクリプトファイルのソースにドット表記を使用しますサブシェルを作成せずに

. /opt/ros/fuerte/setup.bash
. ~/fuerte_workspace/setup.bash
6
anubhava