开始工作时,我必须运行几个命令:
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/