繁体   English   中英

如何在不使用chmod进行解压缩后使Shell脚本可执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM