运行 bash 脚本在 zsh 中不起作用别名命令

Jun*_*Kim 3 shell scripting bash alias

我在centos中使用zsh。我想运行一些 shell 脚本。像这样。

脚本文件

#!/bin/sh

# something ..

source ./aliases-file.sh
Run Code Online (Sandbox Code Playgroud)

别名文件.sh

alias test=ls
alias test2=cat
Run Code Online (Sandbox Code Playgroud)

我运行./script.sh,别名尚未应用于当前会话。我该如何工作?

B L*_*yer 5

当您运行script.sh它时,它会在子 shell 中执行,并且您的别名不会传播到调用 shell(或您所指的当前会话)。您需要获取 script.sh 本身:source script.sh. 这将导致命令在您当前的 shell 中运行,并且别名将变得可见。

旁注:出于可移植性的原因,您应该考虑使用.而不是source因为前者是 POSIX 标准,而后者是bashism