从父目录执行脚本?

时间:2015-06-23 18:49:13

标签: linux bash shell

我有一个根目录。

在那里我有./bin/

./bin/我有一些bash脚本,如:

launch_server.sh port=3000

这些脚本必须从./bin运行,即工作目录必须是:

home/blah/whereever/root/bin

但是,我想这样做:

cd home/blah/whereever/root/
start launch_server.sh port=3000

最后一行会暂时将工作目录设置为./bin/并执行我在./bin中找到的脚本并将该脚本传递给任何参数,例如port = 3000

这可能吗?从根目录启动bin脚本最方便的方法是什么?

原因是路径需要保持相对,所以我不能硬编码任何东西

3 个答案:

答案 0 :(得分:3)

这是一个使用括号的技巧:

cd home/blah/whereever/root/

(cd ./bin/ && sh launch_server.sh port=3000)

解决方案不会更改您的工作目录。

答案 1 :(得分:1)

  

第一个解决方案:

~/.bashrc

alias launch_server="home/blah/whereever/root/bin/launch_server.sh"

应用更改:

source ~/.bashrc

launch_server.sh脚本中,在任何其他命令之前添加:

cd home/blah/whereever/root/bin/

现在,只需从任何地方拨打电话:

launch_server port=3000
  

第二个解决方案:

您想要的start脚本应该如下所示:

#!/bin/bash
cd ./bin
eval "$@"

现在打电话:

  • bash start launch_server.sh port=3000
  • ./start launch_server.sh port=3000

答案 2 :(得分:0)

如果您在home/blah/whereever/root/目录中,则可以使用

运行文件
./bin/launch_server.sh port=3000

这是常用的方法......