为什么第一个命令执行但不是最后两个(stat和dialog)?

问题描述 投票:-1回答:1

我正在编写一个使用对话框的脚本文件(sh文件),我已经到了一个点,我只想把它放在一边几周,因为我生气地寻找错误。

需要注意的脚本部分:

INPUT=/tmp/input.sh.$$ #Just a tmp file used for storing information
FIELDS=/tmp/fields.sh.$$ #Just a tmp file used for storing information

function view_folder_properties() {
    dialog --title "Choose a folder to view properties from" --dselect / 23 60 2> $INPUT
    location=$(<"${INPUT}")

    stat $location > $FIELDS
    dialog --title "Viewing permissions" --textbox $FIELDS 23 60
}

问题不在于代码中的前两行,但是当我想执行stat和dialog时,它会返回两行错误,如下所示:

./lab-E.sh: line 232: stat: command not found
./lab-E.sh: line 233: dialog: command not found

我一直在寻找这个问题差不多一两个小时仍然找不到任何问题,这就是为什么我在寻求你的帮助。

在我的系统上回显$ PATH变量如下所示:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/ProgramData/Oracle/Java/javapath_target_98747640:/mnt/c/Program Files (x86)/Razer Chroma SDK/bin:/mnt/c/Program Files/Razer Chroma SDK/bin:/mnt/c/Program Files (x86)/Intel/iCLS Client:/mnt/c/Program Files/Intel/iCLS Client:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files (x86)/IVI Foundation/VISA/WinNT/Bin:/mnt/c/Program Files/Intel/WiFi/bin:/mnt/c/Program Files/Common Files/Intel/WirelessCommon:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Program Files (x86)/GtkSharp/2.12/bin:/mnt/c/Program Files/dotnet:/mnt/c/Users/<USERNAME>/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/<USERNAME>/AppData/Local/GitHubDesktop/bin:/snap/bin

对话框和统计信息路径/ usr / bin位于上面的$ PATH中

root@LAPTOP-UOKAJ438:~# which stat
/usr/bin/stat
root@LAPTOP-UOKAJ438:~# which dialog
/usr/bin/dialog
root@LAPTOP-UOKAJ438:~#
bash
1个回答
1
投票

statdialog不是shell内置的,它们是外部程序。如果没有完整路径,则必须在$PATH环境变量中搜索它们的位置,该变量通常包含它们的公共位置(分别为/bin/usr/bin)。

但是你在前一行改变了$ PATH。新的$ PATH可能不包含命令所在的目录。

如果您只想要一个变量来存储路径而不是系统路径,请选择一个不同的名称($path就可以了)。

© www.soinside.com 2019 - 2024. All rights reserved.