在名称前不带./的脚本


2

我正在运行一个非常复杂的脚本,该脚本会更改目录并运行许多其他命令。所有这些命令都使用'scriptname'运行,当我从终端执行主脚本时,该命令运行良好。但是,有时我不得不ssh进入服务器并从那里运行主脚本,由于每条命令前都没有./,所以它会失败。

我不想遍历所有脚本和可执行文件,并在命令中添加./,所以还有另一种方法可以解决此问题?


2
只要确保“当前目录”是在您的路径:superuser.com/questions/350844/...
数字克里斯-

9
我不确定我是否完全同意添加当前目录,尤其是如果该目录以的形式出现$PATH:.,因为它会带来安全风险……当您处于时更是如此root。但是,如果该路径的权限很严格,那么拥有专用的脚本路径并添加该路径应该没问题。
0xC0000022L 2014年

1
@DigitalChris,永远不要做,它会打开你一个讨厌的安全问题(仅仅添加了一个名为可执行文件,例如,sl/tmp或其他地方可写的你,等待不知情的受害者胖手指ls(1)因为sl...)
vonbrand

@vonbrand :sl,你说什么? github.com/mtoyoda/sl
Rocket Hazmat

@RocketHazmat用您喜欢的常见命令的任何错字替换
vonbrand 2014年

Answers:


12

有多种方法可以更改此行为,包括添加./到PATH环境变量中,但这会给您的环境带来严重的安全风险。编写脚本的方式确实是错误的,正确的解决方案是遍历所有脚本并修复调用本地脚本的方式。这是唯一不会在旅途中引入额外问题并不会为您造成安全问题的适当修复程序。我知道这不是您听到的,但要咬紧牙关,做到正确。


谢谢您的帮助。由于我使用的是大学用计算机,所以我认为安全比后悔更好,因此,我将修改脚本(并诅咒编写脚本的人!)
user72404 2014年

4
@ user72404:开发人员就是这样做的。诅咒他们的前辈。诅咒他们!;)
0xC0000022L 2014年

1

如果您的脚本恰好在/ opt / housekeeping / bin下,建议您添加

export PATH=$PATH:/opt/housekeeping/bin  

到.bash_profile或.profile或您使用的任何登录脚本,并确保在这些脚本上也设置了755权限。


为什么不~/.local/bin~/bin
-Wilf 2014年

1
我不懂威尔夫,您能启发我吗
akash

-1

您可以为脚本创建别名:

alias scriptfile="./scriptfile"

2
我认为问题在于他从内部调用一堆命令/脚本,这取决于他$PATH的特定方式,因此这对这些没有帮助。
slm

我认为您认为这没有理由不赞成。
user72461

或支持自己以为<。<
user72461 2014年

我不是DV的那个人,如果我这样做的话,我会留下评论。
slm

@ user72461你不能给予好评自己的意见......
strugee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.