1. ホーム
  2. bash

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

2023-08-28 20:23:01

質問

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

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

どのように解決するのですか?

./ (ドットスペース ドットスラッシュ)を使ったシェルスクリプトの実行

を使ってシェルスクリプトを実行する際に “dot space dot slash” でシェルスクリプトを実行する場合、サブシェルをフォークすることなく、現在のシェルでスクリプトを実行します。

$ . ./setup.bash

で指定されたコマンドを実行します。 setup.bash で指定されたコマンドを現在のシェルで実行し、環境を整えてくれます。