docker - 'll' 不是内部或外部命令、可运行程序或批处理文件
问题描述
错误:'ll' 未被识别为内部或外部命令、可运行程序或批处理文件。
尝试获取有关当前工作目录中文件和目录的详细信息时出现此错误,我正在使用 cmd。
我的 dockerfile 包含以下代码:
FROM ubuntu
MAINTAINER my name <my email address>
RUN apt-get update
CMD ["echo","Hello World...! from my first docker image"]
我对 docker 很陌生,我已经尝试了下面链接中提到的所有内容,但对我没有任何帮助。 Linux 命令“将”不起作用
请如果有人可以帮助。谢谢。
解决方案
ll
ls -alF
是已指出的同一个 SO 问题中指定的别名(简写) 。在 Linux 中,您可以使用别名来缩短任何命令。别名的格式是alias_name='<full command>'
.
一些 Linux 版本预装了一组默认别名,例如 alias rm='rm -i'
、mv='mv -i'
. ll
是其中之一。如果您收到此类错误,则需要添加alias ll='ls -alF'
.
现在的问题是在哪里添加?
每个人都会建议将别名放入~/.bashrc
. 但是如果你使用 bash shell,这个文件将是只读的。因此,它总是有可能被错过。你需要把它放在一个总是(最有可能)被阅读的地方。
我同意大多数人会建议您将其添加到其中,/etc/profile
但除非您知道自己在做什么,否则您不应该在这里进行更改。但是您可以将这种解决方法作为一个小的 shell 脚本并将其放在扩展名下/etc/profile.d
,*.sh
因为几乎所有 shell 都始终读取此目录。
因此解决方案是您需要创建一个包含别名的 sh 扩展名文件并将其放入/etc/profile.d/
.
将所有这些应用到您的 Dockerfile 中,它可以重写为
FROM ubuntu
MAINTAINER my name <my email address>
RUN echo "alias ll='ls -alF'" > /etc/profile.d/alias.sh && apt-get update
CMD ["echo","Hello World...! from my first docker image"]
注意:默认情况下,alpine 图像似乎不会读取 /etc/profile.d,因此如果您使用它,请遵循这一点。
推荐阅读
- c++ - android和windows应用程序之间的TCP Socket连接
- arrays - BASH 数组的单个下标中是否可以有多个值?
- lua - 如何在另一个表中的另一个表中插入另一个表?
- c# - C#总结列表中的多个项目
- android - 来自数据库的 LiveData 不会触发 Transformations.switchMap
- karate - 上传文件时出错","错误":["分配前引用的局部变量 'upload_file_path'" - 在空手道中使用 ".yaml" 文件的发布方法
- xml - 如何为此 XML 文件编写 XSLT 文件
- python - 如何使用 python 更新 Elastic Search ( Kibana ) 中可用的大量 Json 数据
- apache-karaf - ClassCastException:com.sun.crypto.provider.AESCipher$General 无法在 Karaf 4.2.5 上转换为 javax.crypto.CipherSpi
- r - 使用 Apply 来避免“条件的长度 > 1 并且只使用第一个元素”?