質問: シェルスクリプト内のcdで、カレントディレクトリを変えるには? シェルスクリプト内のcdコマンドで、カレントディレクトリを変えるにはどうしたらいいか?をどうか教えて下さい。 ms-dosのバッチファイル内で"cd xxxxx"と書き実行した時の動作を、unix(cygwin)環境でも行いたいです。 が、シェルスクリプトは(サブシェルで動く為)カレントディレクトリが変わってくれません。aliasコマンド等でいろいろ実験しましたが、dosバッチファイルのように「バッチファイル単体でディレクトリ移動が出来る方法」を探し出せませんでした。 極めて初歩的とは存じますが、どうか宜しくお願い致します。
回答: カレントディレクトリはプロセスの属性なので、子プロセス内で変更しても親には影響しないというのはおわかりのようなので、親プロセスの中で実行すればいいわけです。 今実行しているシェルプロセスの中でスクリプトファイルに書かれたコマンド群を実行するには、ピリオドコマンドもしくはsourceコマンドを使います。 . スクリプトファイル名 か source スクリプトファイル名 で実行してください。 別の方法としては、やりたいことをスクリプトファイルに書くのでなく、aliasや関数で定義するという方法もあります。 たとえば引数がディレクトリならそこにcdする関数は、 cddd() { test -d $1 && cd $1; } と.bashrcなどで定義します。