回答編集履歴
1
追記
answer
CHANGED
@@ -3,4 +3,37 @@
|
|
3
3
|
```sh
|
4
4
|
CMD= "sudo su - foo -c \"cd /home/foo/rails_app; bundle exec unicorn -c config/unicorn.rb -D\""
|
5
5
|
eval "$CMD"
|
6
|
-
```
|
6
|
+
```
|
7
|
+
|
8
|
+
----
|
9
|
+
|
10
|
+
```sh
|
11
|
+
CMD="sudo su - foo -c \"cd /home/foo/rails_app; bundle exec unicorn -c config/unicorn.rb -D\""
|
12
|
+
$CMD
|
13
|
+
```
|
14
|
+
|
15
|
+
これですと、`$CMD` には下記の通りの文字列が入りますが、
|
16
|
+
|
17
|
+
```sh
|
18
|
+
sudo su - foo -c "cd /home/foo/rails_app; bundle exec unicorn -c config/unicorn.rb -D"
|
19
|
+
```
|
20
|
+
|
21
|
+
`$CMD` で実行したときには単純に空白で区切られて次のようにコマンドラインが解釈されます。
|
22
|
+
|
23
|
+
```
|
24
|
+
sudo
|
25
|
+
su
|
26
|
+
-
|
27
|
+
foo
|
28
|
+
-c
|
29
|
+
"cd
|
30
|
+
/home/foo/rails_app;
|
31
|
+
bundle
|
32
|
+
exec
|
33
|
+
unicorn
|
34
|
+
-c
|
35
|
+
config/unicorn.rb
|
36
|
+
-D"
|
37
|
+
```
|
38
|
+
|
39
|
+
eval を使えば文字列をシェルが再評価するので `"cd /home/foo/rails_app; bundle exec unicorn -c config/unicorn.rb -D"` の部分を1つの塊と認識させることができます。
|