将script.sh移动到bin

时间:2016-03-16 09:01:13

标签: linux bash shell path

我是shell编程的新手,我正在尝试创建一个简单的脚本,它在Scientific Linux 6上给我一些关于机器状态的信息(即日期,时间,用户登录等) (我知道它已经很久了,但是我所在大学的部门都在这里工作,所以没有逃脱)

基本上我已经创建了我的脚本" sysinfo.sh"

 #!/bin/sh
  ....
  exit 0

作为root用户我想移动它以便我能够在任何地方执行它并且我认为正确的方法是

sudo mv sysinfo.sh usr/local/bin

但我收到错误消息

mv: cannot move `sysinfo.sh' to `usr/local/bin': No such file or directory

然后我找了PATH,它给了我

$ echo $PATH
/u/geo2/sw//System/tools/bin:/usr/bin:/bin

移动脚本的正确位置是什么?

3 个答案:

答案 0 :(得分:2)

这种操作或学习的最佳实践是在$ HOME / bin目录中安装脚本。

mkdir $HOME/bin
export PATH=$PATH:$HOME/bin
mv sysinfo.sh $HOME/bin
chmod +x $HOME/bin/sysinfo.sh

如果您想将其移至/ usr / local / bin,为什么不这样做:

sudo mv sysinfo.sh /usr/local/bin
chmod +x /usr/local/bin/sysinfo.sh

chmod命令将使脚本可执行。

来自chmod man的

  

x - 执行/搜索位。

答案 1 :(得分:0)

您发布的命令表示您尝试使用绝对路径进行复制,但是您错过了一个主要斜杠 - 该目录应为/usr而不是usr

尝试

sudo mv sysinfo.sh /usr/local/bin

请注意,除非指定了绝对路径,否则shell将查找相对于当前工作目录的路径。 在这种情况下,shell正在查找当前目录下找不到的子目录usr; 因此错误信息。

答案 2 :(得分:-1)

非常感谢! 最后,我没有意识到目录/ usr / local / bin不在PATH中 所以我只需要

export PATH=$PATH:/usr/local/bin
sudo mv sysinfo.sh /usr/local/bin

:d