2015-11-09 35 views
-2

我有shell命令 对于如文件:测试制作文件名作为命令

我需要运行这个作为

#test 

代替#./test

任何人都请帮助!没有在他们/

+0

是'test'你需要运行的脚本还是shell函数/ etc的文件。你需要能够运行? –

+0

在名为'test'的标准路径中已经有一个命令。通过使用明确分离的名称来避免整个类的调试问题。也许'testR'或'myTest'等等祝你好运。 – shellter

+0

是的。它包含所有的shell函数,但不是通过./test运行它,而是需要以'test'运行。 – Sandy

回答

2

命令被尝试作为

  • shell内建
  • 功能
  • 别名
  • 可执行文件$ PATH中的每个组件

PATH是一个环境变量,它包含一个以冒号分隔的路径,其中shell或or的一些路径exec系统函数搜索可执行文件。

PATH=$PWD:$PATH 

预置当前目录,使您的测试可执行文件可运行。 (因为hek2mgl提到,由于安全原因,追加通常要好得多,因为通常不希望用户可写路径覆盖已经是PATH一部分的写保护路径 - 虽然在这种情况下您确实需要它,因为test是已经是系统级可执行文件)

但是,它仍然会在test shell内建之前。 因此,您应该将其命名为test以外的其他名称,或者在修改PATH后绕过$(which test)的内建命名。

在一个shell中,你也可以使它成为一个调用完整路径的函数(或别名)。这不会有很多安全隐患。

注意: $PWD是您当前目录的绝对路径。您也可以使用.(或另一个相对路径),使PATH随着您的cd一起“更改”,但出于安全原因,这被认为是不好的做法。

+1

永远不要在'$ PATH'之前加上'$ PWD'。某人可能获得了您的用户权限,可能会伪造一些通常只能由root用户安装的二进制文件。我已经改变了你的答案... – hek2mgl

+0

@ hek2mgl是的,追加通常更好的原因。但是,如果OP坚持命名可执行文件“test”,则预先考虑是唯一的选择,因为测试已经是“通常只能由root安装的二进制文件”。 – PSkocik

+1

是的,我意识到这一点,并回滚我的编辑。但是,我不推荐使用它。正确的是'./test' – hek2mgl