gpt4 book ai didi

linux - linux shell 中的无效别名

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:55 57 4
gpt4 key购买 nike

我想运行一些脚本。

修改命令需要别名

但它似乎无效。

例如:

root@161310ea476b:/tmp# cat test.sh
#!/bin/bash
ls /tmp
root@161310ea476b:/tmp#
root@161310ea476b:/tmp# ./test.sh
test.sh
root@161310ea476b:/tmp# . test.sh
test.sh

现在我用了别名

root@161310ea476b:/tmp# shopt -s expand_aliases
root@161310ea476b:/tmp# alias ls="ls -al"

有效。

 root@161310ea476b:/tmp# . test.sh
total 12
drwxrwxrwt 2 root root 4096 Jun 21 09:41 .
drwxr-xr-x 21 root root 4096 Jun 21 09:39 ..
-rwxr-xr-x 1 root root 22 Jun 21 09:41 test.sh

但是这个案例是行不通的。别名似乎无效。

 root@161310ea476b:/tmp# ./test.sh
test.sh
root@161310ea476b:/tmp#

如何解决这个问题?谢谢。

最佳答案

别名不会被用于执行脚本的子 shell 继承。

请参阅此处提供的答案: Aliases in subshell

或者,您可以将别名创建为一个函数(而不是别名),导出它,然后运行您的脚本。

创建一个函数...

function ls() {
/bin/ls -al
}

...导出...

export -f ls

...然后运行你的脚本

. ./test.sh

当然,不要忘记您已经创建了一个函数 ls。 (注意:只要您从中导出它的 shell --- 以及它的任何子 shell --- 打开,它就应该存在)。

关于linux - linux shell 中的无效别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56705615/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com