使用别名执行脚本

时间:2013-01-18 21:23:53

标签: linux bash shell alias

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

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

目标是只需从任何目录中键入“startscript”即可运行脚本。

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

我的脚本以

开头
#!/bin/sh

然后从那里开始

任何想法?感谢

SCRIPT:

#!/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 &

2 个答案:

答案 0 :(得分:1)

如果脚本在/ usr / local / bin中按预期运行,只需键入startscript,但是从另一个目录运行脚本(不会返回错误),但不会产生所需的结果,那么问题在于如何从脚本中引用应用程序。

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

答案 1 :(得分:0)

  

如果我这样做,我可以调用脚本,但它仍然不会给我   结果我想,(应用程序正在启动)就像我从运行脚本时那样做   它所在的目录

似乎所讨论的“应用程序”与脚本/usr/local/bin位于同一目录中,我们已经在PATH上创建了该脚本。要使脚本正确运行但不是应用程序意味着您可能正在调用应用程序错误,例如

./application

除非您从/usr/local/bin拨打电话,否则会失败。修复就像这样

application