source または .(ドット)コマンド
下記のような cd コマンドを使ったシェルスクリプト test.sh がある。
cd /var/www
このシェルスクリプトに下記のように実行した場合、カレントディレクトリはシェルスクリプト実行前と変わらない。
$ pwd /home/user1 $ ./test.sh $pwd /home/user1
これは上記のようにシェルスクリプトを実行すると新たなシェルが起動してそこでシェルスクリプトが実行され、シェルスクリプトが終了すると起動されたシェルも終了するからである。
現在のシェルのカレントディレクトリを変えたいなら source コマンドまたは .(ドット、ピリオド)コマンドを使用してシェルスクリプトを実行すればよい。source コマンドは現在のシェルにスクリプトを読み込んで実行する。
#source も . も which コマンドで見つからない。bashの内部コマンドで同じ機能に2つの名前が付いているということか?
また、source でシェルスクリプトを現在のシェルで実行した場合、シェルスクリプト内でセットして変数がシェルスクリプト終了後にそのまま残っている。同じシェルで実行しているのだから当然だが。
最初のシェルスクリプトに変数に値を代入する処理などを加える。
cd /var/www pwd var1=abc echo $var1
. で実行すると以下のようになる。元のシェルでシェルスクリプトが実行されたので、シェルスクリプトの結果も元のシェルに残っている。
$ pwd /home/user1 $ . ./test.sh /var/www abc $ pwd /var/www $ echo $var1 abc $
参考ページ:
ドットコマンドと直接スクリプトを実行した時の違い - Webエンジニアの技術メモ ~PHP、SQL、Linuxなど~
sourceコマンド (ピリオド)
« puttyの自動ログインとplink | Main | PL/pgSQL その2 »
「Linux」カテゴリの記事
- Laravel4のインストール(2015.05.06)
- CakePHPのインストール(2015.06.14)
- PHPからPDOでPostgreSQLに接続する(2015.06.09)
- yumコマンド(2014.11.17)
- [CentOS 6.6]PHP5.5のインストール(2015.02.22)
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/60260999
Listed below are links to weblogs that reference source または .(ドット)コマンド:
Comments