My Photo

« puttyの自動ログインとplink | Main | PL/pgSQL その2 »

September 04, 2014

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」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/60260999

Listed below are links to weblogs that reference source または .(ドット)コマンド:

« puttyの自動ログインとplink | Main | PL/pgSQL その2 »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof