绕过bash别名并在脚本中运行命令

问题描述 投票:0回答:1

我正在尝试创建一个包含别名列表的bash脚本,并在我的脚本中运行它们。 (这只是一个简化的示例,但可以解释这种情况)。

应该发生的是,我遍历别名,脚本逐个执行它们。

alias_list.sh

#!/bin/bash

alias al1="ls"
alias al2="ls ."
alias al3="ls .."

test_alias_loop.sh

#!/bin/bash -i

# Expand aliases
shopt -s expand_aliases
source ~/Documents/test_ssh_bash/scripts/alias_list.sh

# Exists just to get a list of aliases, proper version gets aliases from bash command
aliases=$(printf "al1\nal2\nal3\n\n")

for ssh_alias in $aliases; do
  echo "$ssh_alias"
  $ssh_alias
done

这是我第一个命令得到的./test_alias_loop.sh:第12行:al1:未找到命令

但是,当我刚做的时候>

al1

该命令运行,我得到当前目录的ls。

我如何遍历别名命令列表,并在脚本中实际运行它们?

我正在尝试创建一个包含别名列表的bash脚本,并在我的脚本中运行它们。 (这只是一个简化的示例,但可以解释这种情况)。我应该在......>

bash macos terminal alias
1个回答
0
投票
$alias \|
 while read -r line ; do
   echo "$line" \|
   perl -pe 's/.*?=//' \|
   xargs
 done | bash
© www.soinside.com 2019 - 2024. All rights reserved.