[英]How to make shell script executable after decompress without chmod
我正在学习linux,并且必须通过以下命令使所有shell脚本可执行:
find ./ -name "*.sh" -exec chmod u+x {} \;
但是,当我下载Logstash.tar.gz并将其解压缩到/ opt时,所有的shell脚本都是可执行的,不需要chmod。 并且/ opt不在$ PATH中。
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
如何构建像logstash这样的应用程序?
===更新了验证的测试步骤===
mkdir testtar && cd testtar
## create a executable script
echo test_with_x >> test_with_x.sh
chmod u+x test_with_x.sh
## create a not executable script
echo test_without_x >> test_without_x.sh
cd ..
## compress with gzip
tar -zcvf testtar.tar.gz ./testtar
mkdir testextract
mv testtar.tar.gz ./testextract
cd ./testextract
tar -zxvf testtar.tar.gz
## decompressed and see a executable and not executable script
Logstash tar捆绑包可能已创建为所有脚本都具有可执行权限。 这应该是提取后不使用chmod u+x
命令即可正常工作的原因。 如果还使用可执行脚本创建tar捆绑包,则在解压缩后也应使用chmod u+x
来获取可执行脚本。
如果要在不使用chmod u+x
情况下执行Shell脚本,请提供Shell脚本作为Shell解释器的参数。
例如
bash MyScript.sh
sh MyScript.sh
ksh MyScript.sh
您有两种解决方案:
将/opt
添加到PATH
:
export PATH=${PATH}:/opt
使用完整路径调用logstash
:
/opt/<anywhere.it.may.be>/logstash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.