假设文件“foo.sh”具有所有权限,我只想运行当前目录中的文件:
#> ./foo.sh
我可以更改什么/在哪里可以通过输入名称来执行文件(任何具有权限的文件):
#>foo.sh
我的想法是我总是可以这样做(在当前目录中)。如果
./file.sh
是执行文件的有效方法,则 file.sh
也可以工作。无意在全球范围内运行 file.sh
。
如果您想特定于本地用户执行此文件,请创建
~/bin
目录,将文件放入其中,并将此路径附加到您的 $PATH
环境中。 ':' 是分隔符 请检查以下链接。
http://www.cyberciti.biz/faq/unix-linux-adding-path/
但是如果你想在全球范围内访问它。然后将文件放入 /usr/bin 或 /usr/local/bin 中,然后检查这些路径是否已在
$PATH
中注册。添加您的权限。打开新终端尝试调用文件。
您也可以将脚本复制到
/usr/local/bin
目录下,该目录用于用户程序。
编辑您的
"$PATH"
变量以包含该文件所在的目录。
例如,这是我的"$PATH"
的一部分:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/rany/bin
它包括以下目录:
将可执行脚本放入这些目录之一后,您只需在命令行中输入其名称即可执行它。
完成此操作后,我建议您阅读此 Bash FAQ 以获取更多信息。
您可以将
.
添加到您的 PATH 中,以便 shell 执行当前工作目录中的任何内容。比如:
export PATH=$PATH:.
此后,您可以通过键入
来运行
foo.sh
程序
$ foo.sh
为什么不直接将
'.'
添加到路径中,使用: export PATH=.:$PATH
上面将运行当前目录中的任何内容。如果您想让它始终存在,请将以上行添加到您的个人资料中。
请注意,对于某些 shell,您可能需要运行两个命令:
PATH=.:$PATH
export PATH
我更改了 PATH 以便能够在没有 / 的情况下运行它。现在,如果我运行像“./file -g”这样的文件,该文件会收到参数,但是当我在没有 ./“file -g”的情况下运行它时,它的行为就好像没有获得 -g 参数一样。为什么会出现这种情况?