【问题标题】:bash script always gets --color=auto as an argumentbash 脚本总是将 --color=auto 作为参数
【发布时间】:2011-12-10 22:09:00
【问题描述】:

我有以下脚本:

#!/bin/bash

STUB=`pwd | awk -F '/' '{print "/" $2 "/" $3 "/"}'`
printf "arguments are $@\n"

if [ $STUB = "/mnt/nas/" ]; then

        /usr/bin/ad ls $@ 1>&1

else

        /bin/ls $@ 1>&1

fi

然而,不知何故,每当我运行它时,即使我从未输入过以下文本,它也会自动添加为参数:

--color=auto

所以我可以运行以下命令:

ls

它会一直打印

arguments are --color=auto

虽然我从来没有输入过。

这个额外的参数弄乱了我的脚本,因为 /usr/bin/ad 无法解析它。任何想法我做错了什么?

谢谢

【问题讨论】:

  • 运行type ls时会发生什么?

标签: bash arguments


【解决方案1】:

让我猜猜:这个脚本叫做ls,你在~/.bashrc或其他地方定义了ls作为ls --color=auto的别名。

【讨论】:

  • 宾果游戏。就是这样。当我在某个目录树中时,我试图覆盖 ls。我现在觉得有点愚蠢:)
【解决方案2】:

您可能在某处定义了别名。

在终端中输入,看看你得到了什么:

alias | grep "ls"

您可以使用绝对路径运行ls

/usr/bin/ad `which ls` $@ 1>&1 

【讨论】:

  • 感谢您的提示。碰巧我在 .bashrc 文件中将 ls 别名为 ls --color=auto 。我需要编辑我的脚本并确保它在传递给 /usr/bin/ad 时丢弃所有不可用的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2020-08-19
  • 2017-09-26
相关资源
最近更新 更多