LoginSignup
0
0

シンボリックリンク経由でパスセンシティブなShellスクリプトを実行する方法

Last updated at Posted at 2024-05-01

問題

例えば、~/myproject/docker-compose.ymlを基にコンテナを起動するShellスクリプトを書いたとします。

~/myproject/start
#!/bin/zsh

open -a Docker
sleep 3
docker-compose up -d

このスクリプトのシンボリックリンクをデスクトップに置きます。

chmod 755 ~/myproject/start
ln -s ~/myproject/start ~/Documents

このシンボリックリンクをUIからダブルクリック!!としても思う通りに動いてくれません。

no configuration file provided: not found

解決策

  • どうにかして実体のパスに移動しましょう!
  • 実体が実行されても差し支えないようにしましょう!

以上を満たすのに複雑な操作は必要ありません。
なぜなら、シンボリックリンク実行時にも$0は実体のパスを指してくれるからです。

~/myproject/start
#!/bin/zsh

cd `dirname $0`
open -a Docker
sleep 3
docker-compose up -d

シンボリックリンク実行結果

[+] Building 0.0s (0/0)  docker:desktop-linux
[+] Running 1/0
 ✔ Container myproject-php-1  Running  0.7s

少しでも多くの方の困る時間が5分でも短くなりますように。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0