TLDR
$ docker ps
Get http:///var/run/docker.sock/v1.19/containers/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ alias docker="sudo docker"
$ cat script1.sh
docker ps
./script2.sh
$ cat script2.sh
docker image ls
$ bash -i script1.sh # call in interactive mode so that aliases could expand
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Get http:///var/run/docker.sock/v1.19/containers/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
如何使第一个脚本调用的其他脚本也以交互模式运行 ,而无需实际更改脚本 ?
不更改脚本的原因是,我只想在工作站上运行很多嵌套脚本。我想避免在每次进行git commit
之前都要进行更改和恢复的麻烦。
用例
当我需要运行脚本时,有几种用例,其中一些命令需要sudo才能在我的工作空间中工作。因此,我正在寻找一种使它们运行而无需直接编辑脚本以在这些命令之前附加sudo的方法(因为该脚本调用了许多其他脚本)。
仅举几例:
我可以想到的一种方法是使脚本使用别名,但是由于别名仅在外壳是交互式的时才起作用,因此如果在被调用的脚本中调用了另一个脚本,则别名将不起作用。 /> 鉴于脚本保持不变,欢迎提出任何其他想法。
答案 0 :(得分:0)
script1.sh
alias docker="sudo docker"
docker ps
script2.sh
. ./script1.sh # assumes sript1/script2 are in same dir
docker image ls
> bash -i script2.sh
如果您的要求比这更复杂,请随时提出,我可以提出另一个建议。