如何在GCP Cloud Shell中从bash文件运行nvm命令(全局安装)?
如何在GCP Cloud Shell中从bash文件运行nvm命令(全局安装)?
我们正在使用GCP上的Cloud Shell编辑器(IDE)。\n根据“环境自定义脚本”文档:\nCloud Shell在实例启动时自动运行脚本$HOME/.customize_environment。与.profile或.bashrc不同,该脚本在Cloud Shell启动时运行一次(而不是每次shell登录都运行一次)。\n该脚本以root身份运行,您可以使用Debian软件包管理命令安装任何您希望存在于每个Cloud Shell会话中的软件包。\n例如,如果您想在Cloud Shell上安装erlang,您的.customize_environment文件将如下所示:\n#!/bin/sh\napt-get update\napt-get -y install erlang\n我们正在尝试预安装node版本,并使用nvm自动配置我们的开发人员。\n我们已经查阅了几篇关于如何在bash脚本文件(.customize_environment文件)中调用nvm的文章,但这些答案似乎都无法解决我们的问题。\nGCP的nvm详细信息如下:\nCloud Shell预安装了全局的nvm,位于/usr/local/nvm/nvm.sh。\n没有~/.nvm文件夹。\n我可以直接从Cloud Shell的命令行中运行nvm。\n但我无法从bash文件中运行nvm。\n最接近的尝试是运行以下命令,但由于Cloud Shell的限制,我在权限上受到限制,不能使用sudo:\n. /usr/local/nvm/nvm.sh\nnvm install 14\n运行结果为:\nDownloading and installing node v14.15.4...\nmkdir: cannot create directory ‘/usr/local/nvm/.cache/bin/node-v14.15.4-linux-x64’: Permission denied\ncreating directory /usr/local/nvm/.cache/bin/node-v14.15.4-linux-x64/files failed\n...\n重要行:mkdir: cannot create directory ‘...’: Permission denied\n我无法绕过它使用sudo,也无法运行usermod(例如usermod -a -G staff $(whoami)),尽管Google的文档说我应该能够:\n当您设置Cloud Shell会话时,您将获得一个基于电子邮件地址的常规Unix用户帐户。通过此帐户,您在分配的VM上具有完全的root权限,甚至可以运行sudo命令(如果需要)。\n问题:\n如何在GCP的Cloud Shell中的bash脚本文件中使用nvm?
问题的原因是在GCP Cloud Shell中无法从bash文件中运行nvm命令。解决方法是通过在bash文件中调用`.customize_environment`来间接调用nvm命令。
以下是解决方法的具体步骤:
1. 打开`.customize_environment`文件。
2. 将以下代码添加到文件中:
#!/usr/bin/bash sudo su -c '. /usr/local/nvm/nvm.sh && nvm install 14'
3. 保存并关闭文件。
4. 运行`.customize_environment`文件,以调用nvm命令。
通过这种方法,您可以在GCP Cloud Shell中成功运行nvm命令。