问题
在 bash 脚本中,我正在使用命令...
sudo -u node bash
Run Code Online (Sandbox Code Playgroud)
.. 从 root 切换到非 sudo 用户,这是失败的。
上下文
我写一个provision.sh为流浪脚本,建立运行Ubuntu 16.04.3的所有包的服务器需要与流星1.6提供的应用程序。
一个必需的步骤是以nvm非 root 用户身份安装。nvm安装完成后,您需要注销并重新登录才能激活nvm。因此,我创建了一个名为 的非 sudo 用户meteor,并希望在下载和安装nvm.
随后,我想切换回 beroot并立即登录为meteor,以便开始使用nvm安装 Node.js。
你会在下面找到一个被大量评论的脚本。每次我调用 Vagrant 时都会运行这个脚本vagrant reload --provision。
我应该使用什么命令而不是sudo -u node bash?
echo "# whoami" && whoami && echo "^^^^ root expected"
echo "As root, create non-sudo user meteor:"
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password) …Run Code Online (Sandbox Code Playgroud) 在 Ubuntu 16.04.3 中,我有一个非常简单的 bash 脚本:
测试文件
[[ 0 == 0 ]] && result="true" || result="false"
echo $result
echo $USER $SHELL $0
Run Code Online (Sandbox Code Playgroud)
当我将它称为非 root 用户me或 as 时root,它按预期工作。如果我使用sudo ./test.sh,它会抱怨语法错误:
[[ 0 == 0 ]] && result="true" || result="false"
echo $result
echo $USER $SHELL $0
Run Code Online (Sandbox Code Playgroud)
什么可能导致这种情况?如何修复它以便me可以正常使用此脚本并与 一起使用sudo?
一年前,我买了一台出厂安装了 Windows 10 的戴尔 XPS。当它到来时,我在内部硬盘上添加了新的分区——boot、home 和 swap——并安装了 Ubuntu 16.04 LTS 来创建一个双引导系统。当时我是按照戴尔官方的教程安装Ubuntu的,做了两处改动:
SHIMx64.EFI,但这不可用。我的选择是在\EFI\BOOT\BOOTx64.EFI和之间\EFI\BOOT\grubx64.efi。我相信我选择了grub64.efi在此之后,我能够安装 Ubuntu 16.04.1,直到今天一切正常。
今天,我收到了固件更新,我接受了。据推测,此更新是为仅限 Windows 的机器设计的。现在,当笔记本电脑启动时,它不再识别内部 SSD 上的 Ubuntu 操作系统。运行系统扫描后(启动时F12),我清除了分区错误,之后BIOS中的Boot Sequence菜单出现如下:
[?] UEFI: THNSN5256GPU7 NVMe TOSHIBA 256 GB, Par(tition 1)
[?] UEFI: SanDisk Partition 1
[?] Windows Boot Manager
Run Code Online (Sandbox Code Playgroud)
SanDisk 是我正在使用的 LiveUSB 密钥。
为此,我添加了一个新的 Boot Option [?] Ubuntu,它\EFI\BOOT\grubx64.efi像以前一样使用 。我把它作为列表中的第一个。
我已禁用安全启动,但我认为这不是以前的问题。
在 SATA 操作面板中,如果我选择 AHCI,笔记本电脑将启动到 SanDisk LiveUSB。如果我将其设置为 …
我有一个 bash 脚本,旨在输出另一个 bash 脚本。我在用cat。我想评估输出脚本中的一些表达式,而不是其他表达式。
PROJECT=myproject
cat << EOF > create_dir.sh
#!/usr/bin/env bash
DATE=`date '+%y%m%d-%H%M'`
mkdir $PROJECT/\$DATE
EOF
Run Code Online (Sandbox Code Playgroud)
生成的create_dir.sh文件如下所示:
#!/usr/bin/env bash
DATE=171123-1834
mkdir myproject/$DATE
Run Code Online (Sandbox Code Playgroud)
我想要的结果是这样的:
#!/usr/bin/env bash
DATE=`date '+%y%m%d-%H%M'`
mkdir myproject/$DATE
Run Code Online (Sandbox Code Playgroud)
如何修改此脚本,以便DATE=不评估后面的表达式,同时确保$PROJECT评估它?
这个问题是从这个关于自然滚动的问题开始的。
在我进行更改之前,我只需点击我的戴尔 XPS 13 的触控板即可产生点击。现在我必须明确点击,这需要额外的努力。如果可能的话,我想恢复点击点击。
我有一个戴尔 XPS 13,默认情况下,它有一个非常敏感的触控板。在您键入时,如果您不小心刷了触控板,触控板会将其视为单击,并且文本插入点会跳转到鼠标所在的位置。我为此问题找到并安装了此修复程序:
sudo apt-get install xserver-xorg-input-libinput
Run Code Online (Sandbox Code Playgroud)
这反转了滚动方向,所以我还编辑了MatchIsTouchpadin的条目/usr/share/X11/xorg.conf.d/90-libinput.conf:
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "NaturalScrolling" "true"
EndSection
Run Code Online (Sandbox Code Playgroud)
有了这个新设置,点击就不会发生。这是不可避免的吗?这是防止意外刷触控板产生点击的唯一方法吗?或者是否可以调节灵敏度,以便将有意的轻敲与短暂的触摸区别对待?
我以前从实时 USB 驱动器中使用过 Ubuntu,但现在我想永久安装它。我正在寻找分步说明,以便我可以准确了解我哪里出错了。
我刚买了一台运行 Windows 10 的戴尔 XPS13,我想安装 Ubuntu 以获得双引导笔记本电脑。我使用 Windows 磁盘管理器来缩小 Windows 分区,并留下未分配的空间。我按照戴尔知识库中的说明进行操作,直到看到图 6。此时,我看到了选项...
BOOTx64.EFI
grubx64.efi
...在文件面板中,但没有 SHIMx64.EFI 的迹象。我已经能够使用 grubx64.efi 启动到 Ubuntu,但是当我进入安装类型屏幕时,我没有看到此屏幕截图中显示的选项。
相反,安装程序直接跳转到类似于分区表的屏幕,但该表完全空白,仅/dev/sda在设备下拉列表中可见,并且没有任何按钮反应......除了立即安装,它抱怨(可以理解)没有定义根。就在“安装类型”屏幕出现之前,WiFi 连接断开,WiFi 菜单中出现“无可用网络设备”。
我尝试使用 14.04 和 16.04,以及 Rufus 和 Universal-USB-Installer 来创建我的可启动 USB 驱动器。
是否有我遗漏的步骤会在 EFI 引导选择步骤中将 SHIMx64.EFI 显示为选项?如果 grubx64.efi 可以启动到 Ubuntu,那么我是否遗漏了允许我选择未分配分区的步骤?
预先感谢您可以分享的所有见解。
编辑:当与 ubuntu-16.04.1-desktop-amd64.iso 一起使用时,来自 Rufus 2.11.995 的日志仅显示包含字符串“shim”的两行:
Extracting: F:\pool\main\s\shim\shim_0.8-0ubuntu2_amd64.deb (432.6 KB)
Extracting: F:\pool\main\s\shim-signed\shim-signed_1.17~16.04.1+0.8-0ubuntu2_amd64.deb (307.6 KB)
Run Code Online (Sandbox Code Playgroud)
ubuntu-14.04.5-desktop-amd64.iso 也是如此:
Extracting: F:\pool\main\s\shim\shim_0.8-0ubuntu2_amd64.deb (432.6 KB)
Extracting: F:\pool\main\s\shim-signed\shim-signed_1.18~14.04.1+0.8-0ubuntu2_amd64.deb (307.2 KB)
Run Code Online (Sandbox Code Playgroud) 我有一个戴尔 XPS 13,默认情况下,它有一个非常敏感的触控板。在您键入时,如果您不小心刷了触控板,触控板会将其视为单击,并且文本插入点会跳转到鼠标所在的位置。我为此问题找到并安装了此修复程序:
sudo apt-get install xserver-xorg-input-libinput
Run Code Online (Sandbox Code Playgroud)
但是,现在滚动是不自然的。当我使用触控板滚动长文档时,它是在内容上移动的视口。我希望内容与我的手指在同一方向移动,就像以前一样,就像在触摸屏上一样。
你能向我解释我应该对文件做哪些改变吗? /usr/share/X11/xorg.conf.d/才能实现这一点吗?
这里提出的解决方案没有帮助。
当我运行时,df -h我看到我有几个/snap名称和大小相似的条目。我已经编辑并重新排列了输出,以便相似的名称都出现在一起(见下文)。
我猜我应该能够删除(例如)早期的 Gimp: 实例/snap/gimp/367。这篇文章告诉我如何减少一个命名的snap 包,但我还没有找到如何只删除两个同名包中的一个。
另外,core...我真正需要哪些软件包?
提前感谢您对此的任何帮助。
/snap/audacity/857 /dev/loop17 188M 188M 0 100%
/snap/chromium-ffmpeg/17 /dev/loop11 33M 33M 0 100%
/snap/core/11167 /dev/loop10 100M 100M 0 100%
/snap/core/11187 /dev/loop19 100M 100M 0 100%
/snap/core18/2066 /dev/loop13 56M 56M 0 100%
/snap/core18/2074 /dev/loop6 56M 56M 0 100%
/snap/core20/1026 /dev/loop23 62M 62M 0 100%
/snap/core20/975 /dev/loop14 62M 62M 0 100%
/snap/gimp/367 /dev/loop22 269M 269M 0 100%
/snap/gimp/372 /dev/loop21 277M 277M 0 100% …Run Code Online (Sandbox Code Playgroud)