Linux 基础知识 - 自动执行脚本

标签 linux bash

开始工作时,我必须运行几个命令:

source work/tools
cd work/tool
source tool
setup_tool

当然,每天这样做几次真的很烦人,所以我尝试制作一个bash脚本工具,在其中放置这些命令并将其放入/user/bin中以使用命令运行它

tool

但是,有一个问题。当我运行脚本,然后尝试通过键入一些基于工具的命令来工作时,它不起作用。 我发现,这很好,因为如果我制作一个脚本然后运行它,该脚本似乎在同一个终端窗口中运行,但它真正做的是,它的行为就像它为执行创建了一个“隐藏窗口”一样,并且在脚本终止后,“隐藏窗口”也终止了。所以我想问 - 有没有办法自动化 source 命令?

我尝试使用xterm -hold -e 命令,但它在新窗口中运行编程的脚本。显然,我不希望这样。如何实现在当前窗口运行?

最佳答案

不要将这样的文件放在 /usr/bin 中。一般来说,您不想弄乱发行版拥有的位置。如果您需要系统范围的位置,则可以使用 /usr/local/bin,或者您可以在主目录中创建一个目录来保存此类供您自己使用的内容(并将其添加到 $PATH 中)。

您注意到的是,当作为脚本单独运行时(tool/path/to/tool 等),该脚本在其自己的 shell session 中运行(与终端窗口本身无关),而您不希望这样(因为脚本所做的更改不会保留到您当前的 shell session 中)。

您想要做的是“源”/在当前 session 中运行脚本。您已经在使用列出的那组命令执行此操作(source work/tools 正是这样做的)。

因此,不要运行 tool/path/to/tool,而是使用 source/path/to/tool。/路径/到/工具

正如 fedorqui 正确指出的那样,您甚至不需要在任何地方为此编写脚本,因为您只需为此创建一个 shell 函数(在正常的 shell 启动文件 .bashrc 等中),然后在需要时运行该函数即可进行设置。

执行此操作时请小心使用完整路径,因为您可能希望无论运行时位于哪个目录,它都能正常工作。

关于Linux 基础知识 - 自动执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495322/

相关文章:

bash - 消息 "syntax error near unexpected token ` ('"

linux - Bash 脚本如果为 null,则为 true 时评估为 false

c - malloc_atfork 中的死锁

linux - 创建在后台启动的 emacs 别名?

node.js - 升级到 Node v8 后,Webpack 无法编译 React 代码(在 Ubuntu 16 上)

linux - bash:更改我自己的密码(不使用 root)

linux - 使用服务主体获取 TGT

c - 如何在另一个 shell 的上下文中访问一个上下文的 shell 变量

bash - 如何在 bash 中编写小数 for 循环

linux - 将数字转换为字母