Bash 将Google Chrome添加到UNIX$PATH

Bash 将Google Chrome添加到UNIX$PATH,bash,google-chrome,unix,Bash,Google Chrome,Unix,我最近被UNIX文件系统缠住了,正在玩终端。我注意到,尽管我更改了$PATH变量,但运行“GoogleChrome”(用于打开Chrome窗口的可执行文件)会给我错误消息 -bash:Google Chrome:未找到命令 以下是上下文: 谷歌被安装在我的/Applications/Google Chrome.app/Contents/MacOS上,作为一个名为“Google Chrome”的可执行文件(我知道这一点,因为当我键入 /Applications/Google\Chrome.app/

我最近被UNIX文件系统缠住了,正在玩终端。我注意到,尽管我更改了$PATH变量,但运行“GoogleChrome”(用于打开Chrome窗口的可执行文件)会给我错误消息

-bash:Google Chrome:未找到命令

以下是上下文: 谷歌被安装在我的/Applications/Google Chrome.app/Contents/MacOS上,作为一个名为“Google Chrome”的可执行文件(我知道这一点,因为当我键入

/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome

一个新的Chrome窗口弹出一条错误消息说

[12838:35843:0822/170630.283203:错误:浏览器\ gpu\通道\主机\工厂.cc(103)]无法启动gpu进程

所以我很确定这是运行程序的可执行文件)

然后我对$PATH变量做了一些挖掘,该变量应该在每次键入“命令”(或者exe不重要)时维护查找可执行文件的搜索路径。因此,我转到~找到了名为.bash_profile的文件,其中编辑并存储了$PATH,并将其附加到该文件中:

PATH=“/Applications/Google\Chrome.app/Contents/MacOS:${PATH}” 导出路径

然后I source ~/.bash_profile和echo$PATH将包含Chrome可执行文件的目录作为$PATH的一部分插入,如下所示:

>  echo $PATH

/Applications/Google\ Chrome.app/Contents/MacOS:/Library/Frameworks/Python.framework/Versions/3.6/bin: ...
然后,当我键入Google\Chrome时,系统会响应“command not found”。我进一步研究了Where is Google\Chrome和Where is Google\Chrome,但我没有得到任何回应,迫使我相信GoogleChrome不是执行路径中的第一条


这里有一个问题,当我试图编辑$PATH使Chrome更容易访问时,我做错了什么?是因为我对$PATH的理解是错误的吗?还是因为我错过了一些小细节?据我所知,我应该让Chrome像python和cassandra一样使用相同的$PATH编辑运行,但我没有。请就这个话题与我分享你的宝贵见解。非常感谢您的时间和努力:)

您所做的错误是将反斜杠作为文字放入变量中;这使得shell试图查找名称中带有反斜杠的目录。(因为反斜杠出现在
echo
的输出中,所以我们知道它实际上是在最后一个变量中结束的,而不是被认为是一个实际上毫无意义的序列并被丢弃)

在引号中,空格已经被认为是文字,所以没有必要再加反斜杠

PATH="/Applications/Google Chrome.app/Contents/MacOS:$PATH"
…就足够了。(无需显式导出:将任何同名的shell变量更新为先前存在的环境变量将自动更改后者)


顺便说一下,如果你想定义一个shell函数,那么你可以调用
chromehttp://example.com/
,可能看起来像:

chrome() { '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' "$@"; }

与别名不同的是,可以导出函数(
export-f chrome
),使其可用于bash的其他实例;他们还能够执行逻辑(例如检查他们的参数,并根据传递的内容执行不同的行为)。

只需将其作为您的系统中的别名即可bashrc@SimonHobbs,这有很多缺点--别名允许您从交互式shell启动它,但不允许其他程序执行它(所以你不能,比如说,
find.-name'*.html'-exec'googlechrome'{}+
)。即使是函数也提供了更大的灵活性,因为(如果使用bash)它们可以被导出到环境中,并通过子进程启动的shell来实现,尽管这还不如做正确的事情并通过路径执行更为普遍。谢谢Charles!这实际上是在清理问题,现在是“Google Chrome”工作并弹出一个带有空白标签的新窗口。我想知道是否还有更多的技巧,比如说,如果我想用所有上次查看的标签打开我的旧窗口,我该怎么做?因为在你的回答中,你包含了一个bash函数,它接收一个网址,这样我就可以打开该网站的一个特定标签。这就是我期待的把戏;)