相关疑难解决方法(0)

如何从Bash脚本检查程序是否存在?

如何验证程序是否存在,以返回错误并退出或继续脚本的方式?

看起来应该很容易,但它一直在困扰我.

bash

2032
推荐指数
20
解决办法
62万
查看次数

检查python脚本中是否存在程序

如何从python脚本检查程序是否存在?

比方说,你要检查wgetcurl可用.我们假设他们应该走在路上.

看到多平台解决方案是最好的,但目前Linux已经足够了.

提示:

  • 运行命令并检查返回代码并不总是足够的,因为即使您尝试,某些工具也会返回非0结果--version.
  • 检查命令时,屏幕上看不到任何内容

此外,我会感谢一个更通用的解决方案,比如 is_tool(name)

python

49
推荐指数
7
解决办法
4万
查看次数

"cmake --version" 指向 /usr/bin/cmake 而 "which cmake" 指向 /usr/local/bin

我正在尝试在我的 linux 计算机上升级 cmake。这是我使用的命令。

删除旧的 cmake:

sudo apt purge --auto-remove cmake
Run Code Online (Sandbox Code Playgroud)

https://cmake.org/download/下载并解压 cmake-3.13.3.tar.gz

然后在提取的 cmake 文件夹中:

./bootstrap
make 
sudo make install 
Run Code Online (Sandbox Code Playgroud)

当我这样做的时候cmake --version它回来了

bash: /usr/bin/cmake: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这表明 .cmake 中不存在 cmake 可执行文件/usr/bin。但是当我运行which cmake它返回

/usr/local/bin/cmake
Run Code Online (Sandbox Code Playgroud)

这确实存在。

我如何将命令cmake指向/usr/local/bin/cmake

我的$PATH节目

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

编辑:与另一个问题不同,因为我确切地知道 cmake 可执行文件在哪里--version并且which具有不同的效果。

linux path cmake

17
推荐指数
3
解决办法
2万
查看次数

找出POSIX系统上是否存在命令

我希望能够从shell脚本判断任何POSIX系统上是否存在命令.

在Linux上,我可以执行以下操作:

if which <command>; then
   ...snip...
fi
Run Code Online (Sandbox Code Playgroud)

但是,which当命令不存在时,Solaris和MacOS 不提供退出失败代码,它们只是向STDOUT输出错误消息.

另外,我最近发现which命令本身不是POSIX(参见http://www.opengroup.org/onlinepubs/009695399/utilities/)

有任何想法吗?

unix shell posix

16
推荐指数
1
解决办法
6769
查看次数

如何检查 Ubuntu 上是否安装了 openSSH

正如标题所问,我如何确定它?仅仅能够在 Linux 机器上使用 ssh 是否意味着安装了 openSSH?我试过了ssh -V,这给了我一个版本号,但这是否意味着安装了 openSSH 或者 ssh 命令来自另一个工具?

linux openssh

9
推荐指数
2
解决办法
2万
查看次数

以root身份运行python脚本

我有以下脚本:

#!/usr/bin/env python                                                           

import sys                                                                      
import pyttsx                                                                   

def main():                                                                     
        print 'running speech-text.py...'                                       
        engine = pyttsx.init()                                                  
        str = "Hi..."                                    
        if len(sys.argv) > 1:                                                   
                str = sys.argv[1]                                               
        engine.say(str)                                                         
        engine.runAndWait()                                                     

if __name__ == '__main__':                                                      
        main() 
Run Code Online (Sandbox Code Playgroud)

而且我把它放进去了 /usr/bin/speech-test.py

我还给root了它的可执行权限和所有权:

sudo chown root:root /usr/bin/speech-test.py
sudo chmod 4755 /usr/bin/speech-test.py
Run Code Online (Sandbox Code Playgroud)

但是,如果我运行,此脚本将只能正确运行sudo speec-test.py.如果我试图运行它只是speech-test.py它抱怨没有找到一堆ALSA lib文件.

我错过了让我的脚本以root权限运行的东西吗?

python shell alsa root

5
推荐指数
1
解决办法
4万
查看次数

卷曲后的路径问题

我使用以下命令在克隆存储库后编译了curl:

./buildconf
./configure --with-libssh2
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

但是,在sudo make install之后,如果

  • 我跑curl -V,我得到:bash下/usr/bin/curl: No such file or directory
  • 我跑步/usr/local/bin/curl -V,我得到:/usr/local/bin/curl: symbol lookup error: /usr/local/bin/curl: undefined symbol: curl_mime_type

我尝试通过将curl / src的路径添加到我的PATH变量来解决这个问题,这使curl命令从终端为我的用户工作。但是,如果我尝试安装php-curl,可以理解apache不会看到卷曲,而是安装了另一种。

关于如何解决此问题的任何想法?

编辑:评论中提到的另一篇文章是询问编译后在哪里可以找到可执行文件。那部分被回答了。但是,如果不将条目添加到PATH变量中,这似乎是不正确的,但是我仍然无法使curl正常工作。这就是我现在要弄清楚的部分。

linux ubuntu curl ubuntu-18.04

1
推荐指数
1
解决办法
2085
查看次数

标签 统计

linux ×3

python ×2

shell ×2

alsa ×1

bash ×1

cmake ×1

curl ×1

openssh ×1

path ×1

posix ×1

root ×1

ubuntu ×1

ubuntu-18.04 ×1

unix ×1