linux - 执行嵌套 bash 脚本时找不到命令

标签 linux bash shell ubuntu

我有一个正在执行另一个 bash 脚本的 bash 脚本:

例如:

脚本名称“rotator”正在调用脚本名称“s3-get”,如下所示

!# /bin/bash
...
./s3-get {and params here}

所有命令如“cat”、“basename”等都可以在此处正确运行

在“s3-get”脚本中,代码如下:

!# /bin/bash
cat > /dev/null << EndOfLicense
...
readonly weAreKnownAs="$(basename $0)"
...
main "$@"

因此,如果我直接从 shell 执行 s3-get 脚本,它就可以完美运行。当我尝试从“rotator”脚本执行它时,出现错误“cat:找不到命令”。我可以通过将“cat”更改为“/bin/cat”来解决此问题,只是我认为这是不正确的,因为如上所述,脚本在独立执行时可以正确运行。如果我如上所述修复“cat”命令,则引发的下一个错误是“basename:找不到命令”,然后是“main:找不到命令”

我对 shell 编程还很陌生,因此非常感谢您的帮助。

谢谢

最佳答案

尝试$ echo 'export PATH=$PATH:/root/scripts/RotateVideos' >> ~/.bashrc && source ~/.bashrc在命令行中,然后使用 s3-get 调用它在你的脚本中。或者使用 cd /root/scripts/RotateVideos && bash s3-get .

关于linux - 执行嵌套 bash 脚本时找不到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597788/

相关文章:

c# - 构建解决方案以支持在 Linux 环境中发送邮件通知

linux - 在 shell 脚本中将脚本目录更改为用户的主目录

xcode - 如何使用 bash 查找文本字符串 --> "PROVISIONING_PROFILE[sdk=iphoneos*]"<--这个字符串有很多特殊字符

linux - 遍历用户输入

python - 运行 matplotlib 与 nbagg 交互的 linux VM 上的 ipython 笔记本

python - Google SDK 实用程序中的 SSL 证书错误

php - 在 Linux 上编译 PHP 还是使用 apt-get/yum?

java - 使用 JSch 获取远程 bash shell,但自动完成功能不起作用

linux - 基于多种模式重命名文件的更好方法

sqlite - Shell 脚本 SQLite