Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux(ubuntu)中从bash脚本运行execbash命令?_Linux_Bash_Shell_Ubuntu_Exec - Fatal编程技术网

如何在Linux(ubuntu)中从bash脚本运行execbash命令?

如何在Linux(ubuntu)中从bash脚本运行execbash命令?,linux,bash,shell,ubuntu,exec,Linux,Bash,Shell,Ubuntu,Exec,我有一个bash脚本,我想运行这样的命令 First-Command \ && exec bash \ && Last-Command execbash将以上述方式抛出错误^^ 如果我这样写: First-Command; exec bash; Last-Command 这种方式不适合我,因为我只想在第一个命令完成后运行execbash 这个场景有解决办法吗 我们是否可以将某个编辑器应用程序连接到终端,并通过该编辑器应用程序向终端提交命令 多谢各位。 当做 Y

我有一个bash脚本,我想运行这样的命令

First-Command \
&& exec bash \
&& Last-Command
execbash将以上述方式抛出错误^^

如果我这样写:

First-Command;
exec bash;
Last-Command
这种方式不适合我,因为我只想在第一个命令完成后运行execbash

这个场景有解决办法吗

我们是否可以将某个编辑器应用程序连接到终端,并通过该编辑器应用程序向终端提交命令

多谢各位。 当做
Yusuf

exec
用命令替换正在运行的
bash
(在本例中,是一个新的
bash
)。它将永远不会返回,因此将
&&
放在它后面是没有意义的。您可以通过删除
exec

来修复它,错误是什么?您可能需要在前两行末尾加一个反斜杠来连接这三行。但也要注意下面的答案,在不运行exec的情况下运行bash,否则最后一个命令将不会运行。阅读我对约翰的回复,我明白了。我不必运行execbash。只要运行bash就会刷新bash,我就可以开始了。所以我可以在最后一行添加&&bash。但是如果我在两个命令之间添加&&bash,那么后面的命令将无法工作。必须成功退出内部bash,才能运行&&last命令。要允许出现错误,可以使用
分隔最后一个命令
在bash完成后无条件运行它。分号分隔的命令依次运行,每一个命令都在一个命令之后开始,然后才结束。我抓到你了。更改主机名后,如果使用sudo命令,操作系统将无法解析主机。。如何通过脚本刷新bash,使sudo命令和所有内容在更改主机名后都能正常工作。。不使用exec bash或bash,因为这将丢弃当前bash并加载新的bash,或者当前bash将被推到后台…我正在尝试通过bash脚本自动化hadoop。在更改.bashrc文件、hadoop配置文件、/etc/hosts、/etc/hostname之后,我需要运行execbash。因为我不能从脚本运行execbash,因为它将启动一个新的bash,所以我必须手动执行这些操作。是否有一个不需要手动操作的工作环境?查看此视频,您将理解我想说的内容:。最后hadoop命令不起作用,所以我不得不运行execbash。第一行:{echo“hello”\}第二行:{&&bash\}第三行:{&&echo“bye”}。“再见”不会在屏幕上打印吗?“再见”会在你退出“<代码> BASH < /代码>”时打印。换句话说,您需要键入“exit”或“Ctrl-D”(以给出EOF)。它将开始一场新的狂欢。我以为这只是刷新了当前的狂欢。你能检查一下吗:sudo sed-i'1s/*/newhostname/'/etc/hostname\&sudo hostname newhostname\&sudo sed-i's/old hostname/newhostname/g'/etc/hosts。现在,如果我在这3个命令之后执行sudo,那么在执行execbash或bash之前sudo不会工作。有没有一种方法可以在不重新启动/关闭当前bash的情况下“刷新”bash(因为bash启动新的bash,exec bash启动新的bash,退出旧的bash)?“sudo不工作”是什么意思?是因为主机已重命名吗?它会给你一个错误信息吗?“不工作”是什么意思?