2017-11-29 7 views
0

を開き、私はディレクトリにドロップすることができます.SHファイルを持っているしたいのですが、その後:のGit Bashのファイルは、タイトルごとのクロム

  • 実行されるHTTPサーバ(単純ノードサーバ)カレントディレクトリ
  • 開き、Chromeのとは、そのサーバー

にそれを指すという考えは、私が開発していたとき、私はすぐにこのbashのファイルを実行し、何の現在のバージョンを見ることができるということです私が取り組んでいるhtml/css/javascriptのウェブサイト。私の問題は、bashファイルでコマンドを実行すると、現在の作業ディレクトリではなく、ルートディレクトリ(私が知る限り)で実行されるということです。私のファイルにhttp-serverと書いても、現在のディレクトリではなく、./というサーバが実行されます。

これを修正するには、最初にディレクトリに移動してからスクリプトを実行します。 current_dir=$(pwd)は私に現在のディレクトリの近くに何かを与えるでしょうが、(1)は引用符を持たないため、ディレクトリ名のスペースがうまく動作しないため、cdコマンドに直接入れることはできません。 )/C:/の代わりに/C/で始まります。誰でもこの問題を解決する方法を教えてもらえますか?

私の現在のコードは以下のようになります。

述べたように
curr_dir=$(pwd) 
cd $curr_dir 
http-server 
start chrome localhost/XXX 

そして、は、http-serverコマンドで結果を間違った場所に、実行されている:

Starting up http-server, serving ./ 
Available on: 
    http://192.168.56.1:8081 
    http://192.168.1.21:8081 
    http://127.0.0.1:8081 
Hit CTRL-C to stop the server 

E:この後に起こる人にとって、これは実際には問題ではありません - 受け入れられた答えを見てください。私には別のタイプミスがありました。

+0

'/C/' C:/ '物事はCygwin特有のものです。おそらく両方の方法で動作します(そうでなければ 'pwd'はかなり役に立たないでしょう)。私のアドバイスは、いつものように、あなたが本当にWindowsにいたいかどうかについて懸命に考えることです。 – tripleee

答えて

2

いいえ;実行するコマンドは常に現在のディレクトリで実行されます。そうでない場合は、仮説が正しいかどうか、たとえばlsは常にルートディレクトリにファイルを表示します。

あなたが別のディレクトリにあるコマンドを実行する場合は、これらのいずれもが、シェルのカレントディレクトリを変更

../relative/path/to/command 

または

/absolute/path/to/command 

をしたいです。作成するプロセスの現在の作業ディレクトリは、このコマンドを実行したときのディレクトリのままです。 (たとえそれをバックグラウンドで実行し、その後、対話シェルの別のディレクトリに変更しても)。

このスクリプトをディスク上に置くディレクトリでコマンドを実行する場合は、次のようにします時には役に立つことがあります。

cd "$(dirname "$0")" 

が、再び、時間のほとんどは、あなたがしたいと、現在のディレクトリで実行するようにコマンドを必要としています。

(あなたは、このような状況があるまでは、シェルスクリプトでcdを使用するには、バグを検討してください。そこは、スクリプトが固定された場所にデータファイルを処理したい状況ですが、これらはまれな例外です。)

PATHのどこかにコマンドhttp-serverがある場合は、ただhttp-serverが実行されます。あなたは、通常はないPATHにカレントディレクトリを持っているはずですが、PATH上のどこからでも、現在のディレクトリにバイナリを実行する代わりにするために、あなたがそう言う:/ `対

./http-server 
+0

ええ、多分いくつかの他のエラーがありますか?それは、サーバーがホストされていないので、実際にはディレクトリで実行されているように見えません。私の印象は、httpサーバはこの点で独自のものでした。しかし、ディレクトリにgit bashターミナルを開き、手動でhttp-serverと入力すると表示されます。あなたが言っていることに基づいて、私は間違っているように聞こえる。他のエラーが出ていないことをもう一度チェックします。あなたはおそらく、私はちょうどどちらかの方法でLinuxをデュアルブートする必要があります:/ – verybadatthis

+0

更新:あなたは本当に正しいです、私は実際のスクリプトで異なるタイプミスを持っていました。説明付きで上記以上に進んでいただきありがとうございます! – verybadatthis

関連する問題