![對於常見腳本,非 sudo 替代 /usr/local/bin](https://rvso.com/image/1127626/%E5%B0%8D%E6%96%BC%E5%B8%B8%E8%A6%8B%E8%85%B3%E6%9C%AC%EF%BC%8C%E9%9D%9E%20sudo%20%E6%9B%BF%E4%BB%A3%20%2Fusr%2Flocal%2Fbin.png)
我習慣將常用腳本放入其中,/usr/local/bin
以便我可以使用終端從任何地方執行它們。
例如,我製作了一個名為 的 shell 腳本1
,使其可執行並將chmod +x 1
其放入 中/usr/local/bin
,然後在腳本中我#!/bin/sh
在第一行鍵入,然後是我的命令。從那時起,透過鍵入即可非常方便地使用和快速執行
1
Enter
在終端機上,從任何資料夾內。
我的問題是,我目前正在一台無法執行此操作的計算機上工作sudo
,而且我也無法期望得到它,因此我無法將我的腳本放入/usr/local/bin
.
我有什麼選擇?是否有另一條路徑具有相同的「從任何地方運行」功能,我可以在沒有 的情況下訪問該路徑sudo
,或者以其他方式實現等效的功能?
接受的答案這個帖子說
對於使用者範圍的腳本,請在主目錄中使用 bin/。
我嘗試過,但我的主目錄中沒有bin
資料夾,當我建立一個資料夾時,我仍然無法從其他任何地方運行該腳本。
我正在 Ubuntu 12.04 LTS 上運行。
答案1
我有什麼選擇?是否有另一條路徑具有相同的「從任何地方運行」功能,我可以在沒有 sudo 的情況下訪問該路徑,或者有其他方法來實現等效的功能?
怎麼做?
在您的家中建立一些目錄來保存通常按照bin
約定命名的腳本。
mkdir ~/bin
現在將您的腳本移至 bin
mv somescript ~/bin
現在如何讓它從任何地方轉過來? !
您必須將其新增bin
至 PATH
打開你的.bashrc
gedit .bashrc
並且加入這一行:
export PATH=$PATH:/home/username/bin
不要忘記替換username
為您的用戶名
儲存退出,然後source bashrc
source .bashrc
現在一切都好了,您可以像以前一樣運行腳本了!但您必須注意這僅與您的用戶有關。
注意:最好將腳本重新命名為 1 ,2 以外的名稱,因為您可能會遇到該名稱的一些問題
更新:
您可以做同樣的事情,只需在您的家中建立 bin 目錄,然後source ~/.profile
而不是~/.bashrc
.由於將 ~/bin 新增至您的 PATH 中已列出.profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
答案2
另外https://askubuntu.com/a/643030/218015您也可以在 .bashrc 中為經常使用的小型任務定義一個別名。例如
alias ll='ls -l'
alias ls='ls --color=auto'
將為您建立一個「命令」ll,它正在執行 ls -l ,並且 ls 將在定義別名後著色。https://wiki.ubuntuusers.de/alias有更多範例和設定方法。
答案3
嘗試~/.local/bin/
。
(我承認這個答案沒有添加任何新內容,但這個問題有一個簡短的答案,不需要閱讀其他所有內容。)
答案4
確實應該有一個針對每個使用者的 bin,因為它在多用戶環境中非常有用,在多用戶環境中,人們被拒絕 root 權限,以使每個人都更加安全。在 bash 腳本中使用以下命令來自動建立它。
if [ ! -d "$HOME/.local/bin" ] ; then
mkdir -p "$HOME/.local/bin"
printf '\nexport "PATH=$PATH:'"$HOME"/.local/bin'"' >> "$HOME/.bashrc"
# Change the PATH right now:
PATH="$PATH:$HOME/.local/bin"
fi