所以我刚开始学习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!
答案 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。