为什么这个别名在.bash_profile脚本中不起作用?

时间:2016-12-14 17:15:43

标签: bash macos shell alias chromium

我正在尝试在Mac OSX上为// change the value of the element ionicInputEl.children[0].value = "ELEMENT UPDATE"; dispatchEvent( ionicInputEl.children[0], 'input' ); fixture.detectChanges(); tick(); // check to see that the instance value updated to match. expect( instance.ionicInputControl.value ).toEqual( 'ELEMENT UPDATE'); 写一个bash别名。它不在bash别名脚本中时有效,但在我尝试创建别名时它不起作用。

我在终端上一个接一个地尝试了这些命令:

Chromium

然后,我尝试将这些全部放在我的cd /Applications/Chromium.app/Contents/MacOS/ ./Chromium --pro-server="socks5://localhost:1234 cd - 脚本中的一个别名命令中:

.bash_profile

现在,当我像这样推出bash:alias launch_chromium='cd /Applications/Chromium.app/Contents/MacOS/; ./Chromium --pro-server="socks5://localhost:1234" ; cd -' 时,我得到了

bash --login

而且,当我将alias命令中的确切内容复制并粘贴到终端中时,它完美地运行:L

unexpected EOF while looking for matching `''

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您问题中发布的别名定义解释您的症状 - 它应该有效。

但是,使用shell 函数而不是别名可以更好地解决问题:

launch_chromium() ( 
 cd /Applications/Chromium.app/Contents/MacOS/
 exec ./Chromium --pro-server="socks5://localhost:1234" "$@"
)

请注意:

  • ( ... )用于封闭函数体,使其在子shell 中运行,从而无需返回上一个工作目录。

  • exec用于提高效率:使用Chromium流程替换子shell,因为不再需要子shell。帽子的提示{ {3}}为此和下一点。

  • 附加
  • "$@"以通过。

  • 传递潜在参数

使用函数有两个重要的优点:

  • 调用它是单个命令,而您的别名包含多个命令,这会导致管道中出现意外行为。

    < / LI>
  • 函数可以接受参数 - 与别名不同。

答案 1 :(得分:2)

实际上不需要更改工作目录。

public class ApplicationDbContext : DbContext, IDbContextFactory<ApplicationDbContext>
{
    public ApplicationDbContext()
    {
    }

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }

    public ApplicationDbContext Create(DbContextFactoryOptions options)
    {
        var builder = new DbContextOptionsBuilder<ApplicationDbContext>();

        string connString = "some hardcoded connection string";
        builder.UseSqlServer(connString);
        return new ApplicationDbContext(builder.Options);
    }
}