HappyFace Asked: 2018-11-23 22:24:26 +0800 CST2018-11-23 22:24:26 +0800 CST 2018-11-23 22:24:26 +0800 CST 如何将参数放入 BROWSER 变量? 772 我喜欢能够做到export BROWSER="lynx -cfg=~/.lynx.cfg"。我直接试过这个,我也试过设置别名alias lynx="lynx -cfg=~/.lynx.cfg",但是这些都没有用。(这意味着使用此变量启动浏览器的工具仍然会忽略我的配置文件或根本不会启动浏览器。) zsh shell 2 个回答 Voted Michael Prokopec 2018-11-23T23:04:02+08:002018-11-23T23:04:02+08:00 我不认为你可以但是你可以尝试: 必须使用绝对路径。 export BROWSER='/home/username/lynx.sh' 在主目录中创建新文件 lynx.sh。 #!/bin/bash linx -cfg=/home/username/.lynx.cfg 让它变得可执行。 然后: Launching Browser should launch lynx. or ./lynx.sh 和/或: 类型: whereis lynx 下一步使用。 编辑 bash_aliases: 必须使用绝对路径到:lynx.cfg 必须使用绝对路径到:lynx,如果不在 /usr/bin/ 中 alias=lynx='/path/to/lynx -cfg=/home/username/.lynx.cfg' 如果路径包含特殊字符,则必须使用 ' '。 Best Answer Stéphane Chazelas 2018-12-03T23:36:17+08:002018-12-03T23:36:17+08:00 $BROWSER被多个实用程序理解为您选择的 Web 浏览器。 根据实用程序,它应该包含: 可执行文件的路径或名称 单词列表,其中第一个是路径或名称,其他单词是初始参数列表。如果幸运的话,它还会理解某种类似于 shell 所做的引用形式。 (不太可能,而且这样做是非常不明智的)shell 命令行的开始。 如果您是第一种情况,我希望您尝试使用它的实用程序会抱怨不存在的"lynx -cfg=~/.lynx.cfg"命令。 在第三种情况下,请注意 shell 不会扩展~in -cfg=~/.lynx.cfg。zsh仅在magicequalsubst启用该选项时执行。如果 a 左边的内容看起来像一个有效的变量名并且它不在 POSIX 模式下,则仅在 a之后bash扩展 a 。~== 但是lynx(至少在我的系统上是 2.8.9dev.16 版本)似乎确实理解~为一个人的主目录本身,所以我希望你的主目录适用于第二类和第三类的实用程序。 $ BROWSER='echo -cfg=~' sensible-browser foo -cfg=~ foo 因此,要么你的浏览器属于第四类,除了第一个词之外什么都忽略,或者只提示你的浏览器是什么;或者你的版本lynx不理解~为家的意思。 运行您的实用程序strace -fe execve the-utility以查看它尝试执行的内容。 如果您的版本lynx不~视为家庭,您可以定义$BROWSER为: export BROWSER="lynx -cfg=$HOME/.lynx.cfg" (假设$HOME不包含空格或引号(或 shell 特有的其他字符)) 在任何情况下,您都应该能够定义$BROWSER为将正确参数传递给的脚本lynx,例如: #! /bin/sh - exec lynx -cfg="$HOME/.lynx.cfg" "$@" 并将其用作您的$BROWSER. 顺便说一句,如果您$HOME从~角色开始,那会很傻lynx,这就是为什么单独lynx处理这些不是一个好主意~。
我不认为你可以但是你可以尝试:
必须使用绝对路径。
在主目录中创建新文件 lynx.sh。
让它变得可执行。
然后:
和/或:
类型:
下一步使用。
编辑 bash_aliases:
必须使用绝对路径到:lynx.cfg
必须使用绝对路径到:lynx,如果不在 /usr/bin/ 中
如果路径包含特殊字符,则必须使用 ' '。
$BROWSER
被多个实用程序理解为您选择的 Web 浏览器。根据实用程序,它应该包含:
如果您是第一种情况,我希望您尝试使用它的实用程序会抱怨不存在的
"lynx -cfg=~/.lynx.cfg"
命令。在第三种情况下,请注意 shell 不会扩展
~
in-cfg=~/.lynx.cfg
。zsh
仅在magicequalsubst
启用该选项时执行。如果 a 左边的内容看起来像一个有效的变量名并且它不在 POSIX 模式下,则仅在 a之后bash
扩展 a 。~
=
=
但是
lynx
(至少在我的系统上是 2.8.9dev.16 版本)似乎确实理解~
为一个人的主目录本身,所以我希望你的主目录适用于第二类和第三类的实用程序。因此,要么你的浏览器属于第四类,除了第一个词之外什么都忽略,或者只提示你的浏览器是什么;或者你的版本
lynx
不理解~
为家的意思。运行您的实用程序
strace -fe execve the-utility
以查看它尝试执行的内容。如果您的版本
lynx
不~
视为家庭,您可以定义$BROWSER
为:(假设
$HOME
不包含空格或引号(或 shell 特有的其他字符))在任何情况下,您都应该能够定义
$BROWSER
为将正确参数传递给的脚本lynx
,例如:并将其用作您的
$BROWSER
.顺便说一句,如果您
$HOME
从~
角色开始,那会很傻lynx
,这就是为什么单独lynx
处理这些不是一个好主意~
。