ddev exec:找不到命令 (.bash_aliases)
ddev exec: command not found (.bash_aliases)
在本地 ddev 实例中,我添加了一些别名和函数到 .ddev/homeadditions/bash_aliases
。
例如:alias ll="ls -lhA"
虽然 ddev ssh
然后 ll
会起作用,但 ddev exec ll
returns
bash: ll: command not found
Failed to execute command ll: exit status 127
为什么?
这实际上是关于 bash 如何工作的,而不是关于 ddev 如何工作的。 .bashrc(因此由 .bashrc 加载的 .bash_aliases)仅由 interactive shell(如 ddev ssh
).这里有一个关于它的 Stack Overflow 答案:Why aliases in a non-interactive Bash shell do not work
ddev exec
只是做了一个 bash -c "<your command>"
,而 bash -c
是非交互设计的。
您可能会考虑添加 ddev 自定义 Web 命令来处理您离不开的东西。
ddev ll
自定义命令可以像这样工作。在 .ddev/commands/web 中创建一个名为 "ll" 的文件,内容为
#!/bin/bash
## Description: Run ls -l inside web container
## Usage: ll [flags] [arguments]
## Example: "ddev ll" or `ddev ll /tmp`
ls -l $@
这是我的设置示例(实际上,我的脚本不只是 ll
)
.ddev/docker-compose.env.yaml
version: '3.6'
services:
web:
environment:
- PROD_USER=foo
- PROD_SERVER=bar.com
- PROD_ROOT=path/to/root
- LOCAL_ROOT=that/path/to/root
- ASSET_DIRS=bi ba bu
.ddev/commands/web/sync_down_files
#!/bin/bash
# rsync prod assets to local
# download all assets
for directory in ${ASSET_DIRS} ; do
rsync -zra \
--delete \
--exclude='.env' \
${PROD_USER}@${PROD_SERVER}:/home/${PROD_USER}/${PROD_ROOT}/$directory \
${LOCAL_ROOT};
done
现在我 ddev sync_down_files
将所有远程资产放入本地站点。数据库也一样。
在本地 ddev 实例中,我添加了一些别名和函数到 .ddev/homeadditions/bash_aliases
。
例如:alias ll="ls -lhA"
虽然 ddev ssh
然后 ll
会起作用,但 ddev exec ll
returns
bash: ll: command not found
Failed to execute command ll: exit status 127
为什么?
这实际上是关于 bash 如何工作的,而不是关于 ddev 如何工作的。 .bashrc(因此由 .bashrc 加载的 .bash_aliases)仅由 interactive shell(如 ddev ssh
).这里有一个关于它的 Stack Overflow 答案:Why aliases in a non-interactive Bash shell do not work
ddev exec
只是做了一个 bash -c "<your command>"
,而 bash -c
是非交互设计的。
您可能会考虑添加 ddev 自定义 Web 命令来处理您离不开的东西。
ddev ll
自定义命令可以像这样工作。在 .ddev/commands/web 中创建一个名为 "ll" 的文件,内容为
#!/bin/bash
## Description: Run ls -l inside web container
## Usage: ll [flags] [arguments]
## Example: "ddev ll" or `ddev ll /tmp`
ls -l $@
这是我的设置示例(实际上,我的脚本不只是 ll
)
.ddev/docker-compose.env.yaml
version: '3.6'
services:
web:
environment:
- PROD_USER=foo
- PROD_SERVER=bar.com
- PROD_ROOT=path/to/root
- LOCAL_ROOT=that/path/to/root
- ASSET_DIRS=bi ba bu
.ddev/commands/web/sync_down_files
#!/bin/bash
# rsync prod assets to local
# download all assets
for directory in ${ASSET_DIRS} ; do
rsync -zra \
--delete \
--exclude='.env' \
${PROD_USER}@${PROD_SERVER}:/home/${PROD_USER}/${PROD_ROOT}/$directory \
${LOCAL_ROOT};
done
现在我 ddev sync_down_files
将所有远程资产放入本地站点。数据库也一样。