我想运行一些脚本。
需要别名来修改命令。
但它似乎无效。
例如:
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#
如何解决此问题? 谢谢。
答案 0 :(得分:0)
用于执行脚本的子shell不会继承别名。
请查看此处提供的答案: Aliases in subshell
或者,您可以将别名创建为函数(而不是别名),将其导出,然后运行脚本。
创建函数...
function ls() {
/bin/ls -al
}
...导出它...
export -f ls
...并运行脚本
. ./test.sh
当然,不要忘记您已经创建了一个函数ls
。 (注意:只要您从---导出的外壳以及其中的任何子外壳处于打开状态,它就应该存在。)