【发布时间】:2021-04-17 14:41:41
【问题描述】:
我有一个脚本someutil.sh,我想在另一个脚本main.sh 中调用它。
两个脚本都是:
- 在
~/bin中并且可以执行 (chmod +x someutil.sh)。 - 以
#!/bin/bash为首 - 命令行功能
$PATH 默认包含~/bin,~/.bashrc 包含别名:
alias someutil="someutil.sh"
alias main="main.sh"
我尝试通过以下方式在脚本中运行someutil
- someutil args(与交互式命令行上的用法相同)
- ./someutil args
- ~/bin/someutil.sh 参数
Main.sh 执行,但如果我尝试使用别名,则“someutil”会出现“找不到命令”错误。
someutil 还创建一个临时使用的文件(在主目录中),然后尝试将一些数据附加到该文件(使用>>,但这会引发“权限被拒绝错误”)。但是,我使用“sed -i ...”将文件作为输入文件的部分工作正常。
我也尝试过遵循这些答案的建议:
- https://stackoverflow.com/a/8352939/1669825
- Having trouble calling a bash script from another bash script
唯一可行的方法是使用~/bin/someutil.sh 调用函数,但我真的很想使用别名(为了便于阅读)并将命令添加到路径以避免总是给出完整路径。我也不明白为什么创建文件的脚本以后不能编辑它...
因此,我显然遗漏了路径变量(不同用户或环境的不同路径变量),或者不知何故不了解脚本在执行时运行的权限。
我在 Chromebook 上的虚拟机上使用 Debian Buster(“Linux 开发环境(测试版)”)。
我们将不胜感激!
【问题讨论】:
-
这可能会有所帮助:using alias in shell script?
-
@Cyrus 其中一个答案在您链接的线程中链接得更深一点,即完成了这项工作,即关于设置 shopt -s expand_aliases 然后 source ~/.bash_aliases 在脚本本身中。谢谢!我会发布一个答案并参考你和我通过你找到的链接(或标记为重复?)
标签: bash alias debian-buster