如何通过输入其名称来运行shell脚本,而不是sh [scriptname]?

时间:2013-06-16 10:14:32

标签: unix sh

所以我刚开始学习UNIX,需要回答一个非常基本的问题!我花了几个小时寻找正确的方法,但似乎我真的无法理解它!

我有一个名为“contactdetails”的脚本。我想通过在任何目录中键入“contactdetails”来运行它,但我可以运行它的唯一方法是输入“sh contactdetails”。

现在我听说我应该将“#!/ bin / sh”添加到我的脚本的顶行,但这没有用。我也被告知我需要添加$ PATH环境变量。我真的不明白这意味着什么,当我输入“echo $ PATH”时,我得到“/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin: / bin中:在/ usr /游戏”

当我尝试在“/ usr”目录中创建目录/文件时,收到消息“Permission Denied”。我通过我的工作服务器登录UNIX,问题是什么?有没有办法让我通过输入其名称而不是sh itsname来运行脚本?

提前致谢!

编辑:我还更改了可执行文件的权限(chmod 755 contactdetails),如果有任何相关性的话!我正在使用PuTTY!

4 个答案:

答案 0 :(得分:3)

您必须使用

使其可执行
chmod +x contactdetails

并在您的路径中包含它所在的目录,例如如果您的脚本位于/dir/with/script

   export PATH=$PATH:/dir/with/script

如果您将此行添加到.bashrc,则会为每个bash shell设置PATH

或将其放入/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin:/bin/usr/games(您需要这样做root用户)

答案 1 :(得分:0)

必须将该脚本(当然包含shebang)复制到$PATH中的一个路径中。像这样:

cp myscript /usr/bin/

如果您对这些目录没有写入权限,那就是它。或者您也可以将$PATH设置为包含您自己的文件夹:

set PATH="$PATH:/path/to/mydir"

答案 2 :(得分:0)

/ usr由root拥有,因此您无权访问。您需要拥有凭据才能写入该目录。

$ PATH包含操作系统在发出没有完整路径的命令时检查的目录。您可以使用$ PATH = $ PATH:附加目录将目录添加到路径。

执行此操作的首选方法是建议使用H2CO3,并且应始终将脚本作为parkydr建议执行。

答案 3 :(得分:0)

虽然你可以将你的脚本放在任何地方,但我的做法是使用我的$ HOME / bin,当我将这些信息添加到我的个人资料时,我会在扩展它之前保存现有的PATH。将这两行添加到$ HOME / .profile:

ORIG_PATH=${ORIG_PATH:-$PATH};   export ORIG_PATH
PATH=$ORIG_PATH:$HOME/bin

所以你应该重新访问你的个人资料:

$ . $HOME/.profile

上面的第一行保存了您的ORIG_PATH,并且对配置文件的连续重访不会无限期地增加您的PATH。