我有一个根目录。
在那里我有./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脚本最方便的方法是什么?
原因是路径需要保持相对,所以我不能硬编码任何东西
答案 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
这是常用的方法......