目录无法跳转
下面是脚本的内容
#! /bin/bash
cd /opt/Qt5.3.2/Tools/QtCreator/bin
./qtcreator
我是用这个脚本来打开Qt5.3.2的
第一行是用来说明执行脚本的shell,linux默认是bash,unix默认是sh
第二行是跳转目录的命令,第三行是执行跳转到的目录下面的程序
一开始我在脚本目录下输入下面的命令执行
root@ubuntu:/usr/local/sbin# sh execute-my-qt.sh
或者输入下面的命令
root@ubuntu:/usr/local/sbin# chmod -x execute-my-qt.sh
root@ubuntu:/usr/local/sbin# ./execute-my-qt.sh
但是都没有反应
之后我又在脚本中加入如下一行
#! /bin/bash
cd /opt/Qt5.3.2/Tools/QtCreator/bin
./qtcreator
echo "helloworld !"
可以正常输出"helloworld !",但是仍然无法跳转目录。
上网查了一下了解到
当shell执行脚本的时候,它会开启一个子shell,目录跳转命令只会在这个子shell中执行,并不会影响到父shell。要想在父shell中实现目录的跳转,需要用以下命令来执行脚本
root@ubuntu:/usr/local/sbin# source ./execute-my-qt.sh
或者
root@ubuntu:/usr/local/sbin# . ./execute-my-qt.sh
最终成功了
Windows下写的shell无法在Linux下运行
错误原因:
这是因为Windows会把enter解释为一个回车加一个换行,而Linux中会把enter只解释为一个换行。
解决办法:
不要在Windows下写shell脚本