如果我写,
#!/bin/bash
echo "foo"
Run Code Online (Sandbox Code Playgroud)
或者
#!/bin/sh
echo "foo"
Run Code Online (Sandbox Code Playgroud)
两者产量相同。我见过一些以#!/bin/sh或开头的脚本#!/bin/bash。它们之间有什么区别吗?
我想以没有密码的其他用户身份从主 ubuntu shell 运行脚本。
我有完整的 sudo 权限,所以我尝试了这个:
sudo su -c "Your command right here" -s /bin/sh otheruser
Run Code Online (Sandbox Code Playgroud)
然后我必须输入我的密码,但我不确定该脚本现在是否真的在该用户下运行。
我如何确认脚本现在确实在该用户下运行?
有什么办法可以从 bash 历史记录中查看命令是在什么时间执行的?我们可以看到订单,但有什么办法我也能得到时间吗?
底线:Bash 历史中的执行时间
我想从我的服务器的历史记录中清除所有以前的命令。我使用过history -c,似乎所有内容都已清除,但是当我通过 ssh 连接到服务器时,所有命令仍然存在。
如何永久清除它们?
当我做一些需要连续输入几十次 root 的事情时,我更喜欢将我的会话切换到 root 会话。在各种教程和说明我已经使用了互联网上,我看到了sudo su,sudo su -,sudo -i和sudo /bin/bash用来打开一个root会话,但我不会在这些当之间,或者说差异事项的区别清楚。
有人可以帮我解决这个问题吗?
我正在尝试将 ZSH 设置为我的默认 shell,但是它不断恢复为 bash。
我试过这个代码:
sudo chsh -s $(which zsh)
Run Code Online (Sandbox Code Playgroud)
我也试过:
sudo chsh -s /bin/zsh
Run Code Online (Sandbox Code Playgroud)
还尝试了没有 sudo 的这些命令。关于我还需要做什么的任何想法。从 bash 中运行 ZSH 时,它会加载并正常工作,但我想将其设置为默认 shell。
什么之间的区别<<,<<<并< <在bash?
我有一个 Ubuntu 11.04 虚拟机,我想设置我的 Java 开发环境。我做了如下
sudo apt-get install openjdk-6-jdk将以下条目添加到~/.bash_profile
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export PATH=$PATH:$JAVA_HOME/bin
Run Code Online (Sandbox Code Playgroud)保存更改并退出
再次打开终端并输入以下内容
echo $JAVA_HOME (blank)
echo $PATH (displayed, but not the JAVA_HOME value)
Run Code Online (Sandbox Code Playgroud)什么也没发生,就像 JAVA_HOME 的导出和它添加到 PATH 从未完成一样。
我不得不去~/.bashrc并在文件末尾添加以下条目
#Source bash_profile to set JAVA_HOME and add it to the PATH because for some reason is not being picked up
. ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
Ubuntu 的终端使用区分大小写的自动完成功能,正如我认为 Linux 所期望的那样。
但我认为使用不区分大小写的名称通常会更方便,以节省您在开始名称时必须准确的情况,并且可能值得额外的误报。是否有可能改变这种行为?