## 概要
以下のシチュエーションで動く[[Task]]の`Taskfile`を定義する方法。
- カレントディレクトリに`hoge`という実行ファイルがある
- `hoge`にはPATHが通っていない
- [[cmd]]、[[PowerShell]]、[[Bash]]のすべてで動く
## 課題
どのような表現でも動かないケースがある。
| 表現 | [[cmd]] | [[PowerShell]] | [[Bash]] |
| --------- | ------- | -------------- | -------- |
| `hoge` | O | O | X |
| `./hoge` | X | O | O |
| `.\\hoge` | O | O | X |
## 対応方法
OSによって挙動を変える。
- [[Windows]]なら`hoge`
- それ以外なら`/hoge`
`Taskfile`の先頭で変数定義して、それを使う。
```yaml:Taskfile.yml
version: "3"
vars:
HOGE:
sh: |
if [ {{OS}} = "windows" ]; then
echo "hoge"
else
echo "./hoge"
fi
tasks:
run:
cmds:
- "{{.HOGE}} arg"
```