首页 > 解决方案 > 从 Debian Buster VM 上的另一个 bash 脚本中调用 Bash 脚本

问题描述

我有一个脚本,someutil.sh我想在另一个脚本中调用它main.sh

两个脚本都是:

$PATH~/bin默认包含并~/.bashrc包含别名:

alias someutil="someutil.sh"
alias main="main.sh"

我尝试someutil通过以下方式在脚本中运行

Main.sh如果我尝试使用别名,则执行但会为“someutil”提供“找不到命令”错误。

someutil还创建一个临时使用的文件(在主目录中),然后尝试将一些数据附加到(使用>>,但这会引发“权限被拒绝错误”)。但是,我使用“ sed -i ...”将文件作为输入文件的部分工作正常。

我也尝试过遵循这些答案的建议:

唯一有效的方法是调用函数 using~/bin/someutil.sh但我真的很想使用别名(为了便于阅读)并将命令添加到路径以避免总是给出完整路径。我也不明白为什么创建文件的脚本以后不能编辑它......

因此,我显然缺少路径变量(不同用户或环境的不同路径变量),或者不知何故不了解脚本在执行时运行的权限。

我在 Chromebook 上的虚拟机上使用 Debian Buster(“Linux 开发环境(Beta)”)。

帮助将不胜感激!

标签: bashaliasdebian-buster

解决方案


感谢@cyrus 和这个答案,解决方案是将以下内容添加到我的main.sh脚本开头:

shopt -s expand_aliases
source ~/.bash_aliases

然后,我可以像在交互式 shell 中一样使用我的自定义脚本。

关于临时文件权限的问题是一个简单的、不相关的语法错误,导致脚本尝试执行文件而不是执行预期的文件(请参阅此答案


推荐阅读