关于linux:使用别名执行脚本

Execute Script using an Alias

我正在尝试创建一个将执行脚本的别名。当我cd进入脚本所在的目录...假设说/ usr / local / bin / startscript时,脚本将按预期运行,并启动我想要的应用程序。

SO。我进入我的bashrc文件并添加了别名
别名startscript ='/ usr / local / bin / startscript'

目标是能够通过在任何目录中简单键入" startscript"来运行脚本。

但是,当我尝试使用别名来运行脚本时,它不能正常运行,因为应该启动的应用程序不能正常运行。

我的脚本以

开头

1
#!/bin/sh

然后从那里去

有什么想法吗?谢谢

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh

#- Check for user 'user'
if [["`whoami`" !="user" ]]; then
  echo"This script can only be executed by user 'user'."; exit
fi

. /usr/local/bin/etctrx/startscriptdirectory/startscriptsetup

#- Kill manager to avoid multiple processes
pkill -f 'JavaApp.jar'

#- Start
nohup java -classpath /usr/local/bin/etctrx/startscriptdirectory/RequiredJars/ojdbc5.jar:/usr/local/bin/etctrx/startscriptdirectory/RequiredJars/activation.jar:/usr/local/bin/etctrx/startscriptdirectory/RequiredJars/mail.jar -jar /usr/local/bin/etctrx/startscriptdirectory/JavaApp.jar > ${JAVAAPPLOGS}/startscript.log 2>&1 &


如果通过简单键入startscript在/ usr / local / bin中使脚本按预期运行,但是从另一个目录运行该脚本(不返回错误),但未产生所需的结果,则问题是如何从脚本中引用应用程序。

正如其他人所指出的,您不必为/usr/local/bin中的某些内容使用别名,并且如果该别名从该目录运行,则显然您的可执行权限也是正确的。如果您尝试运行的应用程序也位于/usr/local/bin中,那么您的脚本可能会假定它位于同一目录中,而在其他目录中情况并非如此,因此您需要在/usr/local/bin中添加cd在脚本中或指定完整的应用程序路径。


I am able to call the script if i do this, but it still won't give me the
results I want,(application being started) like i do when I run the script from
the directory it lives in

看来,所讨论的"应用程序"与脚本" /usr/local/bin"位于同一目录中,而我们所建立的脚本" /usr/local/bin"已位于您的PATH上。为了使脚本正常运行,但使应用程序无法正常运行,则意味着您可能在调用应用程序时出错,例如

1
./application

除非您从/usr/local/bin进行呼叫,否则此操作将失败。修复会像这样

1
application