🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

1回答

1405閲覧

gitbash上で、batchファイルを起動してshスクリプトを実行すると、sh指定先のフォルダではないとろにファイルできてしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

1クリップ

投稿2020/12/23 04:51

編集2020/12/23 08:59

表題の通り、windows10にgitbashを設定して、shスクリプトをbashで動かすと、思惑通りの場所にファイルができないです。
なぜでしょうか。

gitbashのホームディレクトリ:/home/administorater

shファイルの場所

sh

1C:¥users¥administorater¥home¥minami¥tab.sh

batファイルの場所

bat

1C:¥users¥administorater¥desktop¥tab.bat

ちなみにshファイルの中身でtableauの「tabcmd」を使用しています。これが意外とややこしいのですが、使用必須なので。
shファイルの中身

tabsh

1#!/bin/bash 2tabcmd login -s https://online.tableau.com -t xxx -u xxx -p xxx --no-certcheck 3 4 5# 今日の日付 6#dt=`date +"%Y%m%d"`; 7dt=20201021; 8 9tabcmd get "/views/xxx/01.pdf?Date=${dt}" --filename "/home/minami/pdf/${dt}-xxx.pdf" --no-certcheck; 10tabcmd get "/views/xxx/25.pdf?Date=${dt}" --filename "/home/minami/pdf/${dt}-xxx.pdf" --no-certcheck; 11 12 13#上記の処理を待ちます 14wait 15 16# 引数を指定しない時は50を指定されたものとする。 17ids="${1:-10}" 18B=(1 2 3 4 5 6 7 8 9 10) 19A=0 20 21# 1からidsまで処理する 22for i in `seq -f %03g 1 ${ids}`; 23do 24 tabcmd get "/views/xxx/-37.pdf?ID=${i}&Date=${dt}" --filename "/home/minami/pdf/${dt}_${B[$A]}.pdf" --no-certcheck 25 A=$((A+1)) 26done 27 28tabcmd logout

batchファイルの中身が以下です。

tabbat

1"C:\Program Files\Git\bin\bash.exe" /c/users/administorater/home/minami/tab.sh

以下にファイルができる想定なのですが。。。

soutei

1c/users/administorater/home/minami/pdf/xxx

実際は以下にできてます。

c:\Program Files\Git\home\minami\pdf\xxx c:\home\minami\pdf\xxx

上記の形になります。
プログラム側と、c:\の直下に格納先ができてしまいます。
よくわからないのは、shのコードは同じなのに、何故2つの格納先になるのかと、そもそも私の想定格納先と異なってしまう理由がわかりませんでした。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/12/23 05:13

指定先のフォルダとはどこでしょう、また、実際にできるところはどこなんでしょうか
退会済みユーザー

退会済みユーザー

2020/12/23 05:42

失礼しました。なぜか編集がうまくいかず修正します。
y_waiwai

2020/12/23 05:50

teratailのバグで、保存がうまく行かないときがあります。うまくいくまで繰り返せばいいかと。
yumetodo

2020/12/23 15:20

ちなみにですけど "C:\Program Files\Git\bin\bash.exe" -c pwd の結果ってなんですか?
退会済みユーザー

退会済みユーザー

2020/12/23 21:30

申し訳ないです。 今手元にこのPCがないので確かめられないのですが、これは何を確かめようとしているか教えて頂けないでしょうか。 ただ、まだPCある時に、gitbashから直接tab.shがあるディレクトリまでいって、スクリプト走らせても同じ結果だったので、batchファイルは関係ないのかなと考えていました。
yumetodo

2020/12/24 02:40

git bashって/home/foo/barみたいなUnixパスがあると引数展開をするはずなんですよね。その展開がなんかしらの状態でコケてるんだとは思うんです。 どっちかというとこれの結果聞くほうがいいのか "C:\Program Files\Git\bin\bash.exe" -c "cd /home/minami && pwd" ちなみに私が思うに今のパス指定だとC:\Users/minami/pdf/xxxにできるのが正常動作だと思います。ただしHOME環境変数が設定されていない限りにおいて。
bsdfan

2020/12/25 06:16

tabcmdの--filenameに指定したところにファイルがつくられるんですよね? git-bash の / は、何もいじってなかったら C:\Program Files\Git だから、/home/minami/pdf/ にファイルを作ると、c:\Program Files\Git\home\minami\pdf\ にファイルが作られるのが普通の動作な気がします。 fstabで/homeにc:\Usersをマウントするようにしてたりしますか? c:\の直下にできたのは、/c/home/minami/pdf/ でやったとかではないでしょうか。
退会済みユーザー

退会済みユーザー

2020/12/25 07:17

皆さまありがとうごがいました。おっしゃる通りで、フルパス指定すればそこにいきました。 ありがとうございました。
guest

回答1

0

ベストアンサー

皆さんのおかげで理解できました。

何も指定しなければ、以下プラス指定したディレクトリになってました。
C:\Program Files\Git +指定したディレクトリ

フルパスを指定すれば、全てのファイルがそこに格納されました。

投稿2020/12/25 07:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問