alias取别名后,另一个shell中和shell脚本中不生效的问题以及crontab执行docker失败问题

问题一:用alias取别名后,另一个shell中不生效

描述

今天在服务器上配置了一条命令的别名:

alias python38='docker exec -it 4b11 python'

但是我用xshell远程连接时,找不到我重命名的“python38”命令


原因

经过查阅,如果要使用 alias 命令在当前 shell 中创建别名,那么该别名只会在当前 shell 会话中生效。如果希望在其他 shell 会话或其他用户账户中使用该别名,您需要将该别名添加到相应的配置文件中。


解决

如果使用的是 Bash shell,可以将别名添加到 ~/.bashrc 文件中。这样,每次启动新的 Bash shell 会话时,该别名都会自动加载。

vim ~/.bashrc

添加过后,需要重新加载 ~/.bashrc 文件以使更改生效:

source ~/.bashrc

然后在新开的shell中运行如下命令,便可以看到重命名生效

alias -p

问题二:用alias取别名后,别名在脚本中不生效

描述

虽然问题一解决了,但是又遇到了新问题,就是别名在shell脚本里还是不生效

原因

别名只在交互式 shell 中生效,而不在非交互式 shell(例如脚本)中生效。

解决

为了在脚本中使用别名,您可以将别名转换为函数。函数可以在交互式和非交互式 shell 中都能够使用。

function ll() {
    ls -l
}
#!/bin/bash

# 调用 ll 函数
ll

问题三:crontab计划任务不能运行docker命令

描述

crontab 在执行含有docker命令的脚本时,docker命令都执行失败:

#!/bin/bash
docker exec -it 4b11 python test.py

原因

exec 加了 -it 参数就开启了一个终端,计划任务无法进入任何终端。

解决

只需要将exec 后的 -it 参数去掉即可

#!/bin/bash
docker exec 4b11 python test.py
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值