在unix pc计算机中,有一个目录具有可执行的程序示例。 如果有人在目录中并且他尝试了上述命令:
> example
example: command not found
>./example
Hello world!
>
1)为什么程序没有第一次运行? 2)为什么程序第二次运行? 3)程序第一次成功运行需要什么?
另一个与上述不同的问题是 使用unix操作系统中的哪个命令,我们可以检查名为example11的文件的大小?
答案 0 :(得分:3)
阅读bash(1),intro(1),ls(1),stat(1),strace(1),execve(2),stat(2),{{的文档3}},intro(2),execvp(3),hier(7)
大多数environ(7)(特别是bash
)正在使用PATH
环境变量来查找可执行文件。 command not found
消息可能是在您的shell中execvp
失败之后(或者更可能是因为shell在shells之后没有找到任何文件可执行文件传递给execve
)。 / p>
如果您想要更改~/.bashrc
文件,请考虑修改它(例如设置PATH
)。
另请阅读fork(2)& Advanced Linux Programming。顺便说一句,Advanced Bash Scripting Guide是GNU bash
,因此您可以研究其free software代码。
键入/bin/ls --help
或简单ls --help
。然后尝试ls -l example1
列出名为example1
另请阅读source,例如globbing。然后尝试ls -l exampl*
,但首先要了解shell在将参数传递给exampl*
之前展开/bin/ls
答案 1 :(得分:1)
1)你的shell不知道example
的位置。
2)在此,您指定example
位于当前目录中。现在,你的shell可以找到并运行它。
3)对于第一次成功运行的尝试,example
需要位于一个目录中,该目录是shell已知的地方,其中包含许多程序。要查看符合此条件的目录,请运行echo $PATH
。要将example
中包含$PATH
的目录添加到export PATH=$PATH:/path/to/your/directory
,请运行ls -l example11
。
最后,运行{{1}}以查找有关该文件的信息。
答案 2 :(得分:0)
运行可执行shell时,将查看环境变量$PATH
中是否存在该可执行文件,因为$PATH
变量中的路径不存在,无法运行可执行文件。
您告诉shell在哪里可以找到您的可执行文件。所以.
表示当前目录,/
表示路径分隔符。这意味着,在当前文件夹中查找可执行文件名example
。
为了像(案例1)那样运行您的可执行文件,您需要执行以下操作:
在bash上:
PATH=$PATH:/home/cprogtes/ ; export PATH
(假设example
目录中存在/home/cprogtes
。)
或者,您可以在主目录中的.bash_profile
中添加以下条目。
export PATH=$PATH:/home/cprogtes/
要检查文件大小,您可以使用命令du -h <filename>
。