我有 Ubuntu Studio 16.10 64 位。我创建了一个 shell 脚本 xyz.sh 文件的路径是 home/somefolder/test/xyz.sh 我已经添加
`chmod u+x xyz.sh`
我运行了脚本
./xyz.sh
成功了。
但是,当我使用 cd 转到我的主目录并执行 xyz.sh 时
./xyz.sh
我收到消息 bash:./xyz.sh:没有这样的文件或目录
尽管执行以下操作:
PATH=$PATH:home/somefolder/test/xyz.sh
答案1
如果您正确添加了路径,则只需调用脚本的名称,而xyz.sh
不是使用./xyz.sh
通过./
告诉 shell 查看当前工作目录,然后从那里运行 xyz.sh。
--
旁注,您的目录路径开头缺少一个 / ,它应该是PATH=$PATH:/home/somefolder/test
,您应该只添加目录,而不是整个可执行文件名称。
答案2
显式声明可执行文件的路径将使 shell 尝试使用该路径来执行可执行文件。
如果说./myscript
and ifmyscript
不在当前目录中,那么您将收到“没有这样的文件或目录”错误。这确实不是使用$PATH
变量。
应该$PATH
是以:
- 分隔的目录(不是文件)列表,当命令行上未指定路径时,shell 将在其中搜索可执行文件。将当前目录 ( .
)添加到变量中存在潜在的安全风险PATH
(请参阅“添加 . 是否安全?我的路径?怎么会?”)。
当您只想访问普通之外的单个可执行文件时,另一个简单的解决方案$PATH
是使用别名:
alias myscript=/path/to/myscript
(这位于您的 shell 初始化文件中,可能.bashrc
用于bash
)。
您应该在别名中指定可执行文件的完整绝对路径。