【问题标题】:How can I create a command in linux, is alias the only way?如何在 linux 中创建命令,别名是唯一的方法吗?
【发布时间】:2021-04-01 11:29:38
【问题描述】:

我来这里,只是为了上下文,基于这个问题。 How to set bash aliases for docker containers in Dockerfile?

我知道我可以为某个命令创建一个别名并将它们注入到用户的 bash 配置文件中。

例如:

alias kc=/opt/kafka/bin/kc.sh

我还可以将目录添加到路径中(可能这就是我要做的)。

但我想知道有没有一种方法可以将其创建为一种命令? 别名是做到这一点的唯一方法吗?有没有一种方法可以为所有用户创建别名,而不取决于他们使用的 bash?

例如,如果我想创建一个类似的命令 my_command 有没有办法做到这一点?

可能这个问题表明对实际操作系统缺乏了解,但我只是想知道我会有哪些选项,而我的谷歌搜索总是显示相同的结果,所以我想我在这里问了

【问题讨论】:

  • 你可以定义shell函数,你可以编写shell脚本,你几乎可以用任何语言编写程序。
  • 您真的在问如何使系统上的所有用户都可以使用新命令吗?将其放在每个人的$PATH 中的目录中。通常/usr/local/bin 用于此目的。
  • Unix & Linux 可能是询问此类问题的更好地方。
  • 我可以创建一个脚本并将其放在路径中,我只是想知道是否还有其他方法。我认为 alias 与我想做的更相似,但我想知道是否有更简单的方法来做到这一点
  • 别名通常只用于非常简单的命令。这只是一个简单的替换,它不能处理参数。

标签: shell unix


【解决方案1】:

命令已经:/opt/kafka/bin/kc.sh。

我了解您希望将其作为简单的kc.shkc 提供给您的用户,不带目录前缀。解决方案是将该目录放入 PATH 变量中,通常在 /etc/profile 中完成;或者将命令分别放置一个(符号)链接到已经在 PATH 中的目录中,例如 /bin/、/usr/bin 或 /usr/local/bin。

将目录放入 PATH 可能是更好的解决方案,也因为可能会找到更多有用的命令。如果您不喜欢kc.sh 但想要一个简单的kc,您仍然可以在同一目录中创建一个链接,例如通过执行cd /opt/kafka/bin然后执行ln -s kc.sh kc

【讨论】:

  • 感谢您的反馈,我想确实更简单的是将其附加到路径中,因为无论如何它都可以完成大部分所需的操作。我仍然可以创建一个别名,但实际上我认为将其放入路径更简单
  • @MiguelCosta 不知道你为什么如此关注别名。它们的一个问题是它们是特定于外壳的。如果您真的想要命令的系统范围替代名称,我建议使用符号链接。
  • 不关注别名,只是我发现的大多数示例都使用了别名......但理解如果将它放在路径中是最好和更简单的方法,这就是我要做的。可能不会创建符号链接
猜你喜欢
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多