我有一个正在执行另一个 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/