在Fish Shell中设置导出变量

16

我安装了多个版本的PHP,在平常的开发中,我通常使用通过homebrew安装的PHP 5.5.x版本。

在fish shell中

 which php & php --version
=> /usr/local/bin/php
=> PHP 5.5.8 (cli) (built: Jan 16 2014 15:58:25)

路径正确。

我的问题是,当我开发Drupal时,我使用MAMP作为捆绑的lamp堆栈,而MAMP有其自己包含的php版本。我的问题是,在使用Drush与Drupal时,我无法像在bash中那样设置PHP可执行路径。我只想让drush使用捆绑的PHP版本/可执行文件。

在bash中,我可以这样做:

# Set Drush root to MAMP PHP
export DRUSH_PHP=/Applications/MAMP/bin/php/php5.5.3/bin/php

但这在 fish-shell 中不起作用,我尝试过以下方法(没有成功):

fish 配置文件位置:~/.config/fish/config.fish

set -x DRUSH_PHP=/Applications/MAMP/bin/php/php5.5.3/bin/php

如果我使用 drush status 命令运行 fish shell,我总是得到以下输出:

 Drupal version         :  7.26
 Site URI               :  http://default
 Database driver        :  mysql
 Database username      :  root
 Database name          :  dev-db
 Default theme          :  garland
 Administration theme   :  garland
 PHP executable         :  /usr/local/bin/php
 PHP configuration      :  /usr/local/etc/php/5.5/php.ini
 PHP OS                 :  Darwin
 Drush version          :  6.2.0
 Drush configuration    :
 Drush alias files      :
 Drupal root            :  /Applications/MAMP/htdocs/Sandbox/dev
 Site path              :  sites/default
 File directory path    :  sites/default/files

当我在Bourne Shell中运行相同的命令时,我得到了正确的设置:

  Drupal version                  :  7.26                                        
  Site URI                        :  http://default                              
  Database driver                 :  mysql                                       
  Database username               :  root                                        
  Database name                   :  dev-db                                      
  Database                        :  Connected                                   
  Drupal bootstrap                :  Successful                                  
  Drupal user                     :  Anonymous                                   
  Default theme                   :  bartik                                      
  Administration theme            :  seven                                       
  PHP executable                  :  /Applications/MAMP/bin/php/php5.5.3/bin/php 
  PHP configuration               :  /Applications/MAMP/bin/php/php5.5.3/conf/php.ini                                       
  PHP OS                          :  Darwin                                      
  Drush version                   :  6.2.0                                       
  Drush configuration             :                                              
  Drush alias files               :                                              
  Drupal root                     :  /Applications/MAMP/htdocs/Sandbox/dev       
  Site path                       :  sites/default                               
  File directory path             :  sites/default/files                         
  Temporary file directory path   :  /Applications/MAMP/tmp/php   

那么,在 fish shell 中如何设置导出路径到 DRUSH_PHP?

3个回答

22

如果你想在 Fish shell 中模拟 export 命令,只需要创建以下文件:

~/.config/fish/functions/export.fish

function export
    if [ $argv ] 
        set var (echo $argv | cut -f1 -d=)
        set val (echo $argv | cut -f2 -d=)
        set -g -x $var $val
    else
        echo 'export var=value'
    end
end

打开一个新的终端窗口,然后像预期的那样从fish shell中运行export命令:

> export foo=123
> echo $foo
123

20

咦。

语法有点不同,但我弄清楚了。任何遇到这个问题的人,你可以将导出设置为这样:

set -x DRUSH_PHP /Applications/MAMP/bin/php/php5.5.3/bin/php

然后drush就可以得到正确的PHP执行路径。

请查看set文档 以了解Fish中set如何工作,与其他shell的不同之处在于:基本上是:

set variable value

我该如何以这样的方式“export LIBVA_DRIVER_NAME=iHD”,使其在重启/关闭后仍然存在? - Pranav

1
set -Ux DRUSH_PHP /Applications/MAMP/bin/php/php5.5.3/bin/php

-U 或 --universal

设置一个通用变量。该变量将立即对机器上所有用户的 fish 实例可用,并且在 shell 重新启动时将保持不变。

-x 或 --export

导出指定的 shell 变量到子进程中(使其成为“环境变量”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接